24cun_cn 发表于 2017-4-27 08:45:24

Python笔记——异常处理

Python笔记——异常处理

捕获异常

try:
<语句>
except <异常名1>:
<语句>
except <异常名2>:
<语句>
else:
<语句>


另一种形式,不包含except和else语句

try:
<语句>
finally:
<语句>

eg.
l = try:print(l)except:print("error")else:print("no error")finally:print("finally")



常见的异常:
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件末尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 列表月越界引发的异常
IOError I/O操作引发的异常,如打开文件出错等
KeyError 使用字典中不存在的关键字引发的异常
NameError 使用不存在的变量名引发的异常
TabError 语句块缩进不正确引发的异常
ValueError 搜索列表中不存在值引发的异常
ZeroDivisionError 除数为零引发的异常


eg.
try:
l/0
except IndexError:
print('IndexError')
except ZeroDivisionError:
print('ZeroDivisionError')
else:
print 'no error'



多重异常的处理
可以在try语句中嵌套另一个try语句
一旦发生异常,python匹配最近的except语句,
若是内部except能够处理该异常,则外围try语句不会捕获异常。
若是不能,或者忽略,外围try处理

引发异常
python中可以通过raise语句手工引发异常,并向异常传递数据
使用raise可以定义新的错误类型,以适应脚本的需要

格式:
raise 异常名
raise 类名(异常信息)


捕获时:
except MyException as e:
print(e) #将打印出异常信息
#自定义异常class LengthRequiredException(Exception):def __init__(self,length,minLength):Exception.__init__(self)self.length = lengthself.minLength = minLength#引发自定义的异常l = minLength = 6try:raise LengthRequiredException(len(l),minLength)except IndexError:print("index out of bounds")except LengthRequiredException as e:print("Length not fit :length is %d required %d" %(e.length,e.minLength))else:print("no exception was raised")finally:print("finally will be execute")


以上两段程序运行结果:
页: [1]
查看完整版本: Python笔记——异常处理