认识异常
通俗讲,异常就是程序运行中报的错。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行
异常的类型
Python程序运行出错时产生的每个异常类型都对应一个类,程序运行时出现的异常大多继承自Exception
类,Exception
类又继承自异常类的基类BaseException
。Python中异常类的继承关系如下图:
BaseException
类是所有异常类型的基类,它派生了4个子类:Exception
、KeyboardInterrupt
、GeneratorExit
和SystemExit
。其中,Exception
是所有内置的、非系统退出的异常的基类;KeyboardInterrupt
是用户中断执行时会产生的异常;GeneratorExit
表示生成器退出异常;SystemExit
表示Python解释器退出异常。
常见异常
- NameError
NameError是程序中使用了未定义的变量时引发的异常。 - IndexError
IndexError是程序越界访问时引发的异常。 - AttributeError
AttributeError是使用对象访问不存在的属性引发的异常。 - FileNotFoundError
FileNotFoundError是未找到指定文件或目录时引发的异常。
异常捕获语句
1、使用try-except语句捕获异常
try:
可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋值给error
捕获异常后的处理代码
2、异常结构中的else子句
try:
可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋值给error
捕获异常后的处理代码
else:
没有异常的处理代码
3、异常结构中的finally子句
try:
可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋值给error
捕获异常后的处理代码
finally:
一定执行的代码
抛出异常
Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。
1、使用raise语句抛出异常
raise 异常类 # 格式1:使用异常类名引发指定的异常
raise 异常类对象 # 格式2:使用异常类的对象引发指定的异常
raise # 格式3: 使用刚出现过的异常重新引发异常
2、使用assert语句抛出异常
assert表达式[, 异常信息]
异常的传递
如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍然没有处理异常,那么会继续向上传递,直至异常被处理或程序崩溃。
如果您乐意,感谢支持~