Python-24 异常处理

xiaoxiao2021-02-28  108

python标准异常总结

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: 除数不能为零! >>>

转载请注明原文地址: https://www.6miu.com/read-27501.html

最新回复(0)