# python3小白课:多异常捕获 在`Exception`类之下,还有许多其他的从它继承的异常类。我们可以针对不同的具体异常做针对性处理,写多个except块,也可以将多个子类异常合并到一起处理,我们来看一下语法: ```python ## 多个异常类单独处理 try: # 业务语句 ... except Exception1: # as e这样的部分不是必须的 # 处理Exception1异常的语句 ... except Exception2: # 处理Exception2异常的语句 ... except Exception3: # 处理Exception3异常的语句 ... except: # Exception也不是必须的,这样也可以捕获所有类型的异常,通常写在最后一个 # 处理其他未知异常的语句 ... ## 也可以多个异常合成一个处理 try: # 业务语句 ... except (Exception1, Exception2, Exception3): # 处理框定这些异常的语句 ... except: # 处理其他未知异常的语句 ... ``` 咱们来看一个小例子再巩固一下吧: ```python # 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 | 算术错误 |