1.异常 : 程序错误、程序崩溃。程序中某条语句出现异常,那么从这条语句开始,后面的代码不会执行,程序直接结束
# 2.异常捕获:程序出现异常的时候,程序不崩溃
a方式一: 捕获所有类型的异常
"""
a.语法
try:
代码段1
except:
代码段2
finally:
代码段N
其他语句
b.说明:先执行代码段1,如果代码段1不出现异常,直接执行后面的其他语句;
如果出现异常不崩溃直接执行代码段2,然后再接着其他语句
"""
list1 = [1, 2, 3]
try:
print(list1[10])
print({'a': 10}['b'])
print('~~~~')
except:
print('出现异常')
print('======================')
方式2:捕获指定的一个或者多个异常,做相同的处理
try:
代码段1
except 异常类型:
代码段2
finally:
代码段N
其他语句
try:
代码段1
except (异常类型1,异常类型2,...):
代码段2
finally:
代码段N
其他语句
先执行代码段1,如果代码1没有出现异常,直接执行后面的其他语句;
如果代码段1出现异常,如果这个异常的类型和需要捕获的异常类型一致,程序不崩溃,直接执行代码段2,然后再执行其他语句;
如果代码段出现异常,异常类型和需要捕获的异常类型不一致,程序直接崩溃
注意:异常类型要求必须是直接或者间接继承Exception类的子类
try:
# print({'a': 10}['n'])
# print([1, 2, 3][10])
print('======')
print(int('abc'))
except (KeyError, IndexError):
print('出现异常!')
finally:
print('写遗书!')
方式3:捕获不同类型的异常,并且可以对不同的异常做不同的处理
try:
代码段1
except 异常类型1:
代码段2
except 异常类型2:
代码段3
finally:
代码段N
...
try:
print({'a': 10}['b'])
print([1, 2, 3][10])
except IndexError:
print('下标越界')
except KeyError:
print('key不存在')