专栏名称: 隼与鱼
目录
相关文章推荐
51好读  ›  专栏  ›  隼与鱼

异常

隼与鱼  · 简书  ·  · 2019-04-07 07:54

正文

请到「今天看啥」查看全文


异常的概念

在生活中,使用计算机中的某个应用软件时,由于某种错误,可能会引发异常,如下图所示。


程序异常

在程序中,当Python检测到一个错误时,解释器就会指出当前流程已无法继续执行下去,这时就出现了异常,例如,使用print()函数输出一个未定义的变量值,具体如下所示:

print(name)

在Python程序中,如果出现异常,而异常对象并未被捕捉或处理,程序就会用自动的回溯,返回一种错误信息,并终止执行,上述语句返回的错误信息如下:

Traceback (most recent call last):
 File "E:/study/随笔/Python基础1/2.py", line 1, in <module>
 print(name)
NameError: name 'name' is not defined

上述信息提示name变量名未定义,NameError为Python的内建异常类。异常是指因为程序出错而在正常控制流以外采取的行为,即异常是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

异常类

Python为了区分不同的异常,其中内置了许多异常类,常见的异常类如下表所示。

异常类名称 基类 说明
BaseException object 所有异常类的直接或间接基类
Exception BaseException 所有非退出异常的基类
SystemExit BaseException 程序请求退出时抛出的异常
KeyboardInterrupt BaseException 用户中断执行(通常是输入Ctrl+C)时抛出
GeneratorExit BaseException 生成器发生异常,通知退出
ArithmeticError Exception 所有数值计算错误的基类
FloatingPointError ArithmeticError 浮点运算错误
OverflowError ArithmeticError 数值运算超出最大限制
ZeroDivisionError ArithmeticError 除零导致的异常
AssertionError Exception 断言语句失败
AttributeError Exception 对象没有这个属性
EOFError Exception 读取超过文件结尾
OSError Exception I/O相关错误的基类
ImportError Exception 导入模块/对象失败
LookupError Exception 查找错误的基类
IndexError LookupError 序列中没有此索引
KeyError LookupError 映射中没有这个键
MemoryError Exception 内存溢出错误
NameError Exception 未声明、未初始化对象
UnboundLocalError NameError 访问未初始化的本地变量
ReferenceError Exception 弱引用试图访问已经垃圾回收了的对象
RuntimeError Exception 一般的运行时错误
NotImplementedError RuntimeError 尚未实现的方法
SyntaxError Exception 语法错误
IndentationError SyntaxError 缩进错误
TabError IndentationError Tab 和空格混用
SystemError Exception 一般的解释器系统错误
TypeError Exception 对类型无效的操作
ValueError Exception 传入无效的参数
Warning Exception 警告的基类
RuntimeWarning Warning 可疑的运行时行为警告基类
SyntaxWarning Warning 可疑的语法警告基类

在上表中,BaseException是异常的顶级类,但用户定义的类不能直接继承这个类,而是要继承Exception。Exception类是与应用相关异常的顶层基类,除了系统退出事件类之外(SystemExit、KeyboardInterrupt和GeneratorExit),几乎所有用户定义的类都应该继承自这个类,而不是BaseException类。







请到「今天看啥」查看全文