一、捕获指定异常
1、基本介绍
- 捕获一个指定异常,except 后面跟一个指定异常
python
try:
【可能发生异常的代码】
except 【指定异常】:
【捕获异常后执行的代码】
- 捕获多个指定异常,except 后面跟多个指定异常,使用括号
()括起来,并使用逗号,分隔
python
try:
【可能发生异常的代码】
except (【指定异常】, 【指定异常】...):
【捕获异常后执行的代码】
- 捕获所有异常
python
try:
【可能发生异常的代码】
except Exception:
【捕获异常后执行的代码】
- 注:如果【可能发生异常的代码】抛出的异常和【指定异常】的类型不一致,则无法实现有效捕获
2、演示
- 捕获一个指定异常
python
try:
result = 1 / 0
except ZeroDivisionError:
print("除数不能为 0")
# 输出结果
除数不能为 0
- 捕获多个指定异常
python
try:
result = 1 / 0
except (ZeroDivisionError, NameError):
print("除数不能为 0")
# 输出结果
除数不能为 0
- 捕获所有异常
python
try:
result = 1 / 0
except Exception:
print("除数不能为 0")
# 输出结果
除数不能为 0
- 无效捕获
python
try:
result = 1 / 0
except NameError:
print("除数不能为 0")
# 输出结果
ZeroDivisionError: division by zero
二、常见异常类型
| 异常类型 | 说明 |
|---|---|
| AttributeError | 尝试访问对象不存在的属性时引发 |
| IOError | 输入操作失败时引发 |
| OSError | 输出操作失败时引发 |
| ImportError | 无法导入模块或包时引发 |
| IndexError | 使用非法的索引访问数据容器(例如,列表)的元素时引发 |
| KeyError | 访问字典中不存在的键时引发 |
| NameError | 尝试访问未声明的变量时引发 |
| TypeError | 操作或函数应用于不适当类型的对象时引发 |
| ValueError | 操作或函数接收到具有正确类型但不合适的值时引发 |
| ZeroDivisionError | 除数或模数为零时引发 |
三、异常信息
1、基本介绍
- 将捕获到的异常绑定到变量 e,在【捕获异常后执行的代码】中便可以使用它
- 捕获一个指定异常并绑定到变量 e
python
try:
【可能发生异常的代码】
except 【指定异常】 as e:
【捕获异常后执行的代码】
- 捕获多个指定异常并绑定到变量 e
python
try:
【可能发生异常的代码】
except (【指定异常】, 【指定异常】...) as e:
【捕获异常后执行的代码】
- 捕获所有异常并绑定到变量 e
python
try:
【可能发生异常的代码】
except Exception as e:
【捕获异常后执行的代码】
2、演示
- 捕获一个指定异常并绑定到变量 e
python
try:
result = 1 / 0
except ZeroDivisionError as e:
print("除数不能为 0")
print(e)
# 输出结果
除数不能为 0
division by zero
- 捕获多个指定异常并绑定到变量 e
python
try:
result = 1 / 0
except (ZeroDivisionError, NameError) as e:
print("除数不能为 0")
print(e)
# 输出结果
除数不能为 0
division by zero