python异常捕获try except

python的异常处理机制设计的比较传统,在日常的开发中,基本满足我的需要

下面就python的异常,几点小小的讨论

1. try...except
tommy@lab3:~$ python
Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>>
>>> try:
... 1/0
... except:
... print "do something..."
...
do something...
>>>


2. try...finally

finally 里面只是执行完成try中的代码后,必须执行的代码,
即使是 try中有异常抛出,也是会去执行finally

>>> try:
... 1/0
... finally:
... print "I just finally do something ,eg: clear!"
...
I just finally do something ,eg: clear!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
>>>


所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等

>>> try:
... fd=open("have-exists-file", "r")
... print "do some thing ,read file ,write file..."
... finally:
... fd.close()
...
do some thing ,read file ,write file...
>>>


多线程中,对锁的使用

tommy@lab3:~$ python
Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import threading
>>> l_lock=threading.RLock()
>>> try:
... l_lock.acquire()
... print "do some thing."
... finally:
... l_lock.release()
...
True
do some thing.
>>>



注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止
一般我们会这样做

>>> try:
... try:
... fd=open("no-exists-file", "r")
... print "do some thing ,read file ,write file..."
... finally:
... fd.close()
...except:
... print "catch finally exception."
do some thing ,read file ,write file...
>>>


3. 封装了一个全局的捕获异常的函数(偶比较懒,就用了全部的捕获异常方法)

import traceback
import sys
def trace_back():
try:
return traceback.format_exc()
except:
return ''


具体使用

try:
do_something()
except:
print trace_back()



写的比较散,主要是想说说,python异常的简单使用,已经封装的一个简单的获得异常发生时,全局保持的异常信息(可能不准确,但基本够用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的异常处理try except是一种机制,用于捕获和处理程序运行时可能出现的错误或异常。通过使用try语句块来包含可能会引发异常的代码,然后使用except语句块来处理异常并执行相应的操作,可以使程序更加健壮和可靠。在处理异常时,可以使用不同的异常类型来捕获不同的错误,还可以使用finally语句块来执行一些必须要完成的操作,无论是否发生异常。 ### 回答2: Python异常处理try except是一种常见的错误处理机制,用于在程序中捕获异常并执行相应的操作。当程序遇到错误时,会抛出异常并中断执行,但使用try except语句可以让程序继续执行,并对异常进行处理,使之不影响程序的正常运行。下面就来介绍一下Python异常处理try except的相关知识。 try except的语法格式如下: try: # 可能会出现异常的代码块 except TypeError: # 出现指定异常时的处理代码块 except ValueError: # 出现另一种异常时的处理代码块 else: # 没有出现异常时的代码块 finally: # 无论是否出现异常都要执行的代码块 try:表示尝试执行某个代码块,如果代码块执行成功,程序将跳过except语句块并执行else语句块中的代码;如果代码块出现异常,程序会将异常类型和错误信息传递给except语句块,并执行相应的异常处理代码。 except:用来捕获指定类型的异常,多个异常之间可以用逗号隔开。如果不指定异常类型,则表示捕获所有类型的异常。在except语句块中可以进行异常处理,并执行一些操作。 else:当try语句块中没有出现异常时执行的代码块。 finally:无论try语句块中是否出现异常,都会执行finally语句块中的代码。 举例说明: try: num1 = input("请输入一个整数:") num2 = input("请输入另一个整数:") result = int(num1) / int(num2) print(result) except ZeroDivisionError: print("除数不能为0") except: print("输入有误,请输入整数") else: print("计算完成") finally: print("程序结束") 在这个例子中,程序首先尝试执行除法运算,如果num2为0,则会抛出“ZeroDivisionError”类型的异常,然后执行except语句块中的“除数不能为0”的提示信息;如果输入的num1或num2不是整数,则会抛出“ValueError”类型的异常,执行except语句块中的“输入有误,请输入整数”的提示信息;如果除法运算成功,则会执行else语句块中的“计算完成”提示信息。最后,无论是否出现异常,程序都会执行finally语句块中的“程序结束”提示信息。 通过使用try except语句,我们可以更好地处理Python程序中出现的异常,并保证程序的正常运行。 ### 回答3: Python中的异常处理是一种机制,用于使程序可以在遇到错误时进行可控的处理。try语句是异常处理的基本结构,它允许我们写一段代码来尝试执行某些操作,当操作失败时,我们可以使用except语句来捕获并处理异常。 在try语句中,我们可以放置可能导致错误的代码,如果在执行过程中没有错误发生,则会正常执行程序。当在try语句中发生异常时,程序会跳过try块中后续的代码,直接跳到相应的except块中执行,以执行异常处理代码。因此,我们可以在except语句中编写针对不同类型异常的相应处理代码。 如下是try except的基本语法: ```python try: # 执行可能导致错误的代码 except ExceptionType1: # 处理 ExceptionType1 类型的异常 except ExceptionType2: # 处理 ExceptionType2 类型的异常 … else: # 如果没有发生异常,执行该块 finally: # 无论是否发生异常,都会执行该块 ``` 在这个语法中,except块用于处理不同类型的异常,可以有多个,用来分别处理不同的异常。else块在try块中没有发生异常时执行,相当于对没有异常的情况进行处理。finally块中的代码会无论是否发生异常都会执行,在执行完tryexcept之后最后执行finally块,我们通常在finally块中释放资源。 在使用except的语法中,我们可以指定要捕获哪种类型的异常,也可以直接使用Exception来捕获所有类型的异常,处理方式可以根据异常类型进行选择。 假设我们的程序在处理文件时,可能会遇到文件找不到、文件无法读取等问题,在程序中我们可以为这种情况编写特定的异常处理程序: ```python try: with open('test.txt','r') as f: data = f.read() except FileNotFoundError: print('文件不存在') except PermissionError: print('文件无法读取') else: print(data) ``` 以上代码中,如果文件不存在,会执行“文件不存在”的异常处理程序,如果文件无法读取,会执行“文件无法读取”的异常处理程序,如果两者都不是,则会执行“else”中的程序来输出文件内容。 总之,在Python中,try except语句可以让我们通过处理异常方式来增强程序的健壮性,使程序可以在遇到异常时进行可控的处理。通过学习Python中的异常处理,我们可以编写更加稳定、可靠的程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值