异常
异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止
异常包含三个部分:
1.异常的追踪信息 File "D:/python代码6/day6/1.异常.py", line 10, in <module>
aaa
2.异常的类型 NameError
3. 异常的信息 name 'aaa' is not defined
错误分为两大类:
1. 语法上的错误:在程序运行前就应该立即修正 这个好避免
2. 逻辑上的错误:比如:字典没有key,你非要取key,
列表没有索引
变量没有名字 这些不好避免
为何要处理异常
避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性
如何处理异常
try:
代码1
代码2
代码3
......
except NameError:
当抛出的异常是NameError时执行的子代码块
except ....:
pass
else:
pass
finally:
pass
异常处理的单分支
try:
a = 1
except NameError as f:
print('兄弟检查一下你的代码')
print(f)
else:
程序没有抛出异常的时候执行
print('代码正确')
finally:
不管有错没错 一定会执行的部分
print('完成了异常捕获')
异常处理的多分支
try:
a
print('===========')
print('===========')
print('===========')
L = [1, 2]
L[2]
except NameError as f:
print('兄弟检查一下你的代码')
print(f)
except IndexError as f:
print('兄弟检查一下你的代码索引')
print(f)
else:
# 程序没有抛出异常的时候执行
print('代码正确')
finally:
不管有错没错 一定会执行的部分
print('完成了异常捕获')
万能捕获
try:
d = {'x':1,'y':2}
d['z'] # KeyError
L = [1, 2]
L[2]
print('===========')
print('===========')
print('===========')
a
except Exception as f:
print('兄弟检查一下你的代码')
print(f)
else:
# 程序没有抛出异常的时候执行
print('代码正确')
finally:
不管有错没错 一定会执行的部分
print('完成了异常捕获')
爬虫常用异常处理
try:
pass
except ConnectionResetError:
break