作用:当代码出现异常时,越过异常代码继续往下执行
1.简单处理
try:
pass # 这里写可能会出现异常的代码
except:
pass # 出现异常之后执行的代码
# 例子
def division(i,k):
return i/k
try:
print(division(1, 0)) # 无输出
except:
print('请输出正确的除数') # 输出: 请输出正确的除数
2.针对性捕获异常
try:
pass # 这里写可能会出现异常的代码
except ZeroDivisionError:
pass # 出现 ZeroDivisionError包含的异常执行这里
except Exception:
pass # 出现 Exception 包含的异常执行这里
# 例子
try:
print(division(1, 0)) # 无输出
except ZeroDivisionError:
print('请输出正确的除数,ZeroDivisionError') # 输出: 请输出正确的除数,ZeroDivisionError
except Exception:
print('请输出正确的除数,Exception') # 无输出
# 把ZeroDivisionError和Exception调换一下位置
try:
print(division(1, 0)) # 无输出
except Exception:
print('请输出正确的除数,Exception') # 输出: 请输出正确的除数,Exception
except ZeroDivisionError:
print('请输出正确的除数,ZeroDivisionError') # 无输出
# ZeroDivisionError是Exception的子类,ZeroDivisionError能捕获的异常Exception也能捕获,所以执行了Exception
# 在捕获针对性异常的时候应该按照从小到大的规则,也就是先写子类再写父类
3.搭配else使用
try:
pass # 这里写可能会出现异常的代码
except ZeroDivisionError:
pass # 出现 ZeroDivisionError包含的异常执行这里
except Exception:
pass # 出现 Exception 包含的异常执行这里
else:
pass # 没有出现异常时执行这里
# 例子
try:
print(division(1, 1)) # 输出 1.0
except ZeroDivisionError:
print('请输出正确的除数,ZeroDivisionError') # 无输出
except Exception:
print('请输出正确的除数,Exception') # 无输出
else:
print('代码执行完毕,没有出现异常') # 输出 代码执行完毕,没有出现异常
4.搭配finally使用
try:
pass # 这里写可能会出现异常的代码
except ZeroDivisionError:
pass # 出现 ZeroDivisionError包含的异常执行这里
except Exception:
pass # 出现 Exception 包含的异常执行这里
else:
pass # 没有出现异常时执行这里
finally:
pass # 不管有没有异常都执行这里
# 例子
try:
print(division(1, 1)) # 输出 1.0
except ZeroDivisionError:
print('请输出正确的除数,ZeroDivisionError') # 无输出
except Exception:
print('请输出正确的除数,Exception') # 无输出
else:
print('代码执行完毕,没有出现异常') # 输出 代码执行完毕,没有出现异常
finally:
print('不管没有没有异常都执行这里') # 输出 不管没有没有异常都执行这里
使用try...except的时候嵌套最好和if一样不要超过三层