四、Python之异常处理
序言
我们的代码必然存在各种各样我们难以察觉的漏洞,为了加强程序的稳定性和鲁棒性,我们需要提前在代码中打好预防针,对各种可能出现的漏洞预先做好应对措施,这就是“异常处理”。
python中异常类型
| AssertionError | 断言失败 |
|---|---|
| AttributeError | 访问的对象属性不存在 |
| IndexError | 索引超出序列范围 |
| KeyError | 字典中查找的“键”不存在 |
| NameError | 访问的变量不存在 |
| OSError | 操作系统异常 |
| SyntaxError | python语法错误 |
| TypeError | 不同类型对象间操作无效 |
| ZeroDivisionError | 除数为0 |
try-except
- try...except结构一般模式
try:
检测范围
except ErrorType [as reason]:
出现 ErrorType 后的处理代码
try:
file=open('my.tex')
except OSError as reason:
print('文件打开错误!'+str(reason))
- 针对不同异常设置多个except
try:
file=open('my.tex')
except OSError:
print('文件打开错误!')
except TypeError as reason:
print('文件打开错误!'+str(reason))
- 对多个异常统一处理
try:
file=open('my.tex')
except (OSError,TypeError):
print('文件打开错误!')
- 捕获所有异常
try:
file=open('my.tex')
except:
print('文件打开错误!')
try-except-finally
为了在出现异常后,防止一些必要的收尾命令被跳过,可以将一些必要的命令防在finally后。
try:
file=open('my.tex')
except:
print('文件打开错误!')
finally:
file.close()
题外话——更灵活的else
- 要么怎样,要门怎样
if 条件:
语句
else:
语句 - 干完怎样,干不完就别想
while 条件:
语句
else:
语句
只有while正常跳出时才会执行else中语句,使用break跳出while则不会执行else中语句。 - 没有问题就干吧
try:
语句
except:
语句
else:
语句
没有出现任何异常类型则会执行else后语句。

浙公网安备 33010602011771号