转自:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45814&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403
1、AssertionError 断言语句(assert)失败
2、AttributeRRrror 尝试访问位置的对象属性
3、IndexError 索引超出系列的范围
4、keyError 字典中查找一个不存在的关键字 注意:使用.get方法即使关键字不存在也不会报错即程序不会垮掉
5、NameError 尝试访问一个不存在的变量
6、OSError 操作系统产生的异常(例如打开一个不存在的文件 ,有很多子类)
5、SyntaxError Python语法错误
6、TypeError 不同类型之间的无效操作
如何检测异常并且处理他们-try语句:任何出现在try语句中的异常都会except中列出的被错误检测出来,进行相应的操作
1、try-except
语句:
try:
检测范围(语句块)
except Exception[as reason可选]://如果错误是此类的话,执行
出现异常(Expection)后的处理代码
例如:
try:
f=open('我为什么是一个文件.tex')
print(f.read())
f.close()
except OSError as reason:
print('文件出错了\n错误的原因是:'+str(reason))
except TypeError as reason:
print('类型出错了\n错误的原因是:'+str(reason))
>>>
文件出错了
错误的原因是:[Errno 2] No such file or directory: '我为什么是一个文件.tex'
注意:try语句中如果出现异常,剩下的语句将不会被执行
2、try-except-finally
try:
检测范围(语句块)
except Exception[as reason可选]://如果错误是此类的话,执行
出现异常(Expection)后的处理代码
finally:无论如何都会被执行的代码
raise语句:自己引发一个异常
>>> raise ZeroDivisionError
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
raise ZeroDivisionError
ZeroDivisionError
>>> raise ZeroDivisionError('除数为0的异常')
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
raise ZeroDivisionError('除数为0的异常')
ZeroDivisionError: 除数为0的异常