2.2 KiB
2.2 KiB
python3小白课:多异常捕获
在Exception类之下,还有许多其他的从它继承的异常类。我们可以针对不同的具体异常做针对性处理,写多个except块,也可以将多个子类异常合并到一起处理,我们来看一下语法:
## 多个异常类单独处理
try:
# 业务语句
...
except Exception1: # as e这样的部分不是必须的
# 处理Exception1异常的语句
...
except Exception2:
# 处理Exception2异常的语句
...
except Exception3:
# 处理Exception3异常的语句
...
except: # Exception也不是必须的,这样也可以捕获所有类型的异常,通常写在最后一个
# 处理其他未知异常的语句
...
## 也可以多个异常合成一个处理
try:
# 业务语句
...
except (Exception1, Exception2, Exception3):
# 处理框定这些异常的语句
...
except:
# 处理其他未知异常的语句
...
咱们来看一个小例子再巩固一下吧:
# coding:utf-8
import sys
while True:
try:
a = int(input("请输入a:"))
b = int(input("请输入b:"))
c = a / b
print("商为:", c)
except ValueError:
print("数值错误,仅能接收整数参数")
except ArithmeticError:
print("算术错误")
except Exception:
print("未知错误")
比如输入的值不能支持变为整数时会报ValueError,当除数为0的时候,会报ArithmeticError等。
我们可以注意到,有的时候异常处理结构可以结合循环语句进行,在前面的例子中,我们在except块仅做了日志打印处理,在实际编程中这可能是还不够的。我们可以在异常捕获到之后,如果错误的数据能修复的尝试进行修复,将异常信息保存到一个日志文件中,也可以在这一步发送邮件、短信等通知合适的运维人员等等。完成异常正确处理之后,我们可以使用continue之类的语句控制进入下一次循环或者绕过这一条错误的条目。
单词释义
| 单词 | 释义 |
|---|---|
| ValueError | 值错误 |
| ArithmeticError | 算术错误 |