AssertionError断言语句(assert)失败AttributeError尝试访问未知对象属性EOFError用户输入文件末尾标志EOF(Ctrl+d)FloatingPointError浮点计算错误GeneratorExitgenerator.close()方法被被调用的时候ImportError导入模块失败的时候IndexError索引超出序列的范围KeyError字典中查找一个不存在的关键字KeyboardInterrupt用户输入中断键(Ctrl+c)MemoryError内存溢出(可通过删除对象释放内存)NameError尝试访问一个不存在的变量NotImplementedError尚未实现的方法OSError操作系统出现异常(例如打开一个不存在的文件)OverflowError数值运算超出最大限制ReferenceError弱引用(weak reference)试图访问一个已经被垃圾回收 机制回收了的对象RuntimeError一般运行时错误StopIteration迭代器没有更多的值SyntaxErrorPython的语法错误IndentationError索引错误TabErrorTab和空格混合使用SystemErrorPython编译器系统错误SystemExitPython编译器进程被关闭TypeError不同类型间的无效操作UnboundLocalError访问一个未初始化的本地变量(NameError的子类)UnicodeErrorUnicode相关的错误(ValueError的子类)UnicodeEncodeErrorUnicode编码时的错误(UnicodeError的子类)UnicodeDecodeErrorUnicode解码时的错误(UnicodeError的子类)UnicodeTranslateErrorUnicode转换时的错误(UnicodeError的子类)ValueError传入无效参数ZeroDivisionError除数为零
try:
检测范围
except Exception [as reason]:
出现异常(Exception)后的处理代码
try: f = open('E:\\Tt.txt') print(f.read()) f.close() except OSError: print('文件出错了T_T') >>> ================================ RESTART ================================ >>> 文件出错了T_T >>> try: f = open('E:\\Tt.txt') print(f.read()) f.close() except OSError as reason: print('文件出错了T_T\n错误的原因:'+str(reason)) >>> 文件出错了T_T 错误的原因:[Errno 2] No such file or directory: 'E:\\Tt.txt' >>> try: sum = 1 + '1' f = open('E:\\Tt.txt') print(f.read()) f.close() except OSError as reason: print('文件出错了T_T\n错误的原因:'+str(reason)) except TypeError as reason: print('类型出错了T_T\n错误的原因:'+str(reason)) >>> 类型出错了T_T 错误的原因:unsupported operand type(s) for +: 'int' and 'str' >>> 把多个异常合为一个元组 try: #sum = 1 + '1' f = open('E:\\Tt.txt') print(f.read()) f.close() except (OSError,TypeError) as reason: print('出错了T_T\n错误的原因:'+str(reason))
try:
检测范围
except Exception [as reason]:
出现异常(Exception)后的处理代码
finally:
无论如何都会执行的代码
try: f = open('E:\\Tt.txt','w') print(f.write('我存在!')) sum = 1 + '1' except (OSError,TypeError) as reason: print('出错了T_T\n错误的原因:'+str(reason)) finally: f.close() >>> 4 出错了T_T 错误的原因:unsupported operand type(s) for +: 'int' and 'str' >>> 程序报错了,但数据还是保存在了文件中。
关键字:raise
>>> raise Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> raise RuntimeError: No active exception to reraise >>>一般会在raise后面加上异常的名字
>>> 1/0 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> 1/0 ZeroDivisionError: division by zero >>> raise ZeroDivisionError('除数不能为零!') Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> raise ZeroDivisionError('除数不能为零!') ZeroDivisionError: 除数不能为零! >>>