异常捕获
1.异常
异常就是错误。
执行程序的过程中,如果出现异常,会中断程序的执行()
exit() - 这个表示提前结束程序,也算时正常结
2.异常捕获 - 让程序在出现异常的时候,不崩溃,还可以接着往后执行
注意:不要滥用异常捕获。如果是因为使用者使用不当导致程序出现异常,又希望在出现异常的时候可以继续执行,才使用异常捕获。
结构1: - 捕获所有异常
try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except:
捕获到异常需要执行的代码块(代码2)
执行过程:先执行代码1,如果出现异常直接马上执行代码2;如果没有出现异常,就不执行代码2
如果需要捕获异常的代码段1中出现异常,将不会判断需要捕获的异常的代码段2,直接马上执行捕获到异常需要执行的代码块
结构2: - 捕获指定异常
try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except 异常类型:
捕获到异常需要执行的代码块(代码2)
结构3: - 同时捕获多种异常
try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except (异常类型1,异常类型2…):
捕获到异常需要执行的代码块(代码2)
结构4:
try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except 异常类型1:
捕获到异常需要执行的代码块1(代码2)
except 异常类型2:
捕获到异常需要执行的代码块2
try:
print('abc'[4])
except:
print('捕获到异常')
print('===')
try:
age = int(input('请输入年龄:'))
if age >= 18:
print('成年')
except:
print('年龄输入有误')
注意:如果知道异常类型,尽量把异常类型加入进去。因为这样可以避免很多错误比如下面的例子
try:
age = int(input('请输入年龄:')) # ValueError
if age >= '18':
print('成年!')
else:
print('未成年!')
except:
print('年龄输入有误!')
这个问题明显是程序员自身书写代码出现了错误,所有此时就算输入对了也会异常,因为数字类型和字符串类型无法比较,也是一个异常,导致会就算输入正确的数字,因为异常,也只能会输入except后面的代码段