异常捕获
异常捕获
1.定义
代码运行出错会导致异常
异常发生后如果没有解决方案则会导致整个程序结束
2.异常的三个重要组成
2.1 traceback
翻到最下面从下往上的第一个蓝色字体鼠标左键点击即可跳转到错误的代码所在的行
2.2 XXXError
错误的类型
2.3 错误类型冒号后面的内容
错误的详细原因 通过看这个原因可能就会找到解决的方法
3.错误的种类
3.1语法错误
这种是不被允许的 出现应立刻修改
3.2逻辑错误
可以被允许 但出现了需尽快修改
3.3示例
print(idna) # NameError
l = [11,22,33]
print(l[100]) # IndexError
d = {'username':'jason'}
print(d['xxx']) # KeyError
int('abc') # ValueError
4.基本语法结构
4.1.基本语法结构
try:
有可能会出错的代码
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
4.2.异常捕获示例
try:
int('abc')
except NameError as e:
print('变量名name不存在',e)
except ValueError:
print('值不是纯数字')
4.3.万能异常捕获句式
try:
int('abc')
print(name)
l = [11]
l[100]
except Exception:
print('你来啥都可以处理')
PS 异常捕获句式和万能异常
1.有可能会出现错误的代码才需要被监测
2.被监测的代码一定要越少越好
3.异常捕获使用频率越低越好
4.4.
try:
被监测的代码
except 错误类型 as e:
...
else:
被监测的代码不报错的时候执行
finally:
无论是否报错最终都会执行
4.5 assert 断言
eg
name = 'jason'
assert isinstance(name,str) # 断言name是字符串类型 断言正确的话 执行结果为True
4.6主动报异常
raise 错误类型
raise Exception