异常处理
程序错误分为两种:语法错误 和 异常错误
语法错误:代码没有按照python规定语法去写,发明创造产生的错误
异常错误:在代码语法正确的前提下,程序报错就是异常
#try...except... 基础语法 用于解决程序异常问题
#raise 可以主动抛异常,异常类可以自定义
| 异常名称 |
描述 |
| BaseException |
所有异常的基类 |
| SystemExit |
解释器请求退出 |
| KeyboardInterrupt |
用户中断执行(通常是输入^C) |
| Exception |
常规错误的基类 |
| StopIteration |
迭代器没有更多的值 |
| GeneratorExit |
生成器(generator)发生异常来通知退出 |
| StandardError |
所有的内建标准异常的基类 |
| ArithmeticError |
所有数值计算错误的基类 |
| FloatingPointError |
浮点计算错误 |
| OverflowError |
数值运算超出最大限制 |
| ZeroDivisionError |
除(或取模)零 (所有数据类型) |
| AssertionError |
断言语句失败 |
| AttributeError |
对象没有这个属性 |
| EOFError |
没有内建输入,到达EOF 标记 |
| EnvironmentError |
操作系统错误的基类 |
| IOError |
输入/输出操作失败 |
| OSError |
操作系统错误 |
| WindowsError |
系统调用失败 |
| ImportError |
导入模块/对象失败 |
| LookupError |
无效数据查询的基类 |
| IndexError |
序列中没有此索引(index) |
| KeyError |
映射中没有这个键 |
| MemoryError |
内存溢出错误(对于Python 解释器不是致命的) |
| NameError |
未声明/初始化对象 (没有属性) |
| UnboundLocalError |
访问未初始化的本地变量 |
| ReferenceError |
弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
| RuntimeError |
一般的运行时错误 |
| NotImplementedError |
尚未实现的方法 |
| SyntaxError |
Python 语法错误 |
| IndentationError |
缩进错误 |
| TabError |
Tab 和空格混用 |
| SystemError |
一般的解释器系统错误 |
| TypeError |
对类型无效的操作 |
| ValueError |
传入无效的参数 |
| UnicodeError |
Unicode 相关的错误 |
| UnicodeDecodeError |
Unicode 解码时的错误 |
| UnicodeEncodeError |
Unicode 编码时错误 |
| UnicodeTranslateError |
Unicode 转换时错误 |
| Warning |
警告的基类 |
| DeprecationWarning |
关于被弃用的特征的警告 |
| FutureWarning |
关于构造将来语义会有改变的警告 |
| OverflowWarning |
旧的关于自动提升为长整型(long)的警告 |
| PendingDeprecationWarning |
关于特性将会被废弃的警告 |
| RuntimeWarning |
可疑的运行时行为(runtime behavior)的警告 |
| SyntaxWarning |
可疑的语法的警告 |
| UserWarning |
用户代码生成的警告 |
获取错误行号和文件名(了解)
#(了解)系统底层获取行数和文件名的函数( 只有在程序异常时才能触发 )
def return_errorinfo(n):
import sys
f = sys.exc_info()[2].tb_frame.f_back
if n==1:
return str(f.f_lineno) #返回当前行数
elif n == 2:
return f.f_code.co_filename #返回文件名
raise 语句有如下三种常用的用法:
raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。
raise 异常类名称:raise 后带一个异常类名称,表示引发执行类型的异常。
raise 异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息。