1、Python中常见的异常 & 捕获异常
1、常见异常
1、NameError: name 'a' is not defined
2、IndexError: list index out of range
3、KeyError: 'nam'
4、ValueError: invalid literal for int() with base 10: 'b'
5、ZeroDivisionError: division by zero
2、如何分析、解决这些异常
1、分析异常
1、查看控制台的报错信息,报错信息会显示行号、点击文件可以跳到问题行
2、通过debug调试去排查,步骤:断点、单步调试,函数内部调试运行、计算器运算结果,步骤如下:
step over、step out、step into,具体可以参考:Step into, Step over, Step out区别_step into和step over_叼辣条闯天涯的博客-CSDN博客
一般哪里会出现异常呢?
一般是开发者控制不了的地方,例如:用户输入数据、用户传参、函数返回值调用,需要加上异常捕获
2、捕获异常
使用 try......except语句,语句公式如下:
try:报错代码
except:处理手段和结果,包括但不限于:日志记录、警告、提示等
finally:一定会执行,不论try中的代码会不会报错
语法逻辑:机制不会因为报错影响后面的代码运行
1、先运行 try中的代码,如果报错,会执行except中的代码,再执行后续代码
2、try中的代码不报错,不会执行except中的语句,直接运行后续代码
举例:
没有使用异常捕获之前:
使用异常捕获之后:
3、捕获异常的进阶方法
在except后加上 except Exception as err,会将错误信息保存在err变量中,可以获取本身的报错信息,举个例子:
没有捕获异常前的报错:
使用了 Exception 之后的报错:
真实项目情况下,需要对不同的报错信息进行不同的处理:记录日志,警告,发送邮件等。
- 尽量去区分异常进行捕获,优先使用
- 最后加上Exception 兜底
例如:
命中写出来的异常时:
命中兜底逻辑时: