2020/06/03 异常处理
Python中一切都是对象,异常也采用对象的方式来处理,处理过程如下:
- 抛出异常:在执行一个方法是,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器。
- 捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常。
try...一个except结构(还可以多个,按照先子类后父类的顺序)是最常见的异常处理结构,结构如下:
try:
被监控的可能引发异常的语句块
except BaseException [as e]:
异常处理语句块
常见异常的解决:
- SyntaxError:语法错误
- NameError:尝试访问一个没有申明的变量
- ZeroDivisionError:除数为0错误
- ValueError:数值错误
- TypeError:类型错误
- AttributeError:访问对象的不存在的属性
- IndexError:索引越界异常
- KeyError:字典的关键字不存在
with上下文管理
finally由于是否发生异常都会执行,通常我们释放资源的代码。其实,我们可以通过with上下文管理,更方便的实现释放资源的操作。
with上下文管理的语法结构如下:
with context_expr[as var]:
<语句块>
with上下文管理可以自动管理资源,在with代码块执行完毕后自动还原进入该代码之前的现场或上下文。不论何种原因跳出with块,不论是否有异常,总能保证资源正常释放,极大的简化了工作,在文件操作、网络通信相关的场合非常常用。