文章目录
- 一、Python 捕获指定类型异常
- 1、异常类型简介
- 2、捕获并处理指定异常
- 3、代码实例 - 捕获并处理指定异常
- 4、代码实例 - 异常捕获失败案例
- 二、Python 捕获多个类型异常
- 1、捕获多个异常语法
- 2、代码实例 - 捕获多个异常
一、Python 捕获指定类型异常
1、异常类型简介
Python 中的 异常 由 异常类 Exception Class 表示 , 每个异常类都代表一个特定的错误类型 ;
常见的 异常类 :
- FileNotFoundError : 表示打开一个不存在的文件错误 ;
- ZeroDivisionError : 表示除以零的错误 ;
- ValueError : 表示一个无效的值 ;
- KeyError : 表示在字典中不存在指定的键 ;
- IndexError : 表示在列表或元组中不存在指定的索引 ;
- IOError : 表示 I/O 错误 , 例如无法读取或写入文件 ;
当发生异常时 , 程序会停止执行当前语句 , 并跳转到异常处理程序 Exception Handler , 该程序负责处理异常并防止程序崩溃 ;
在 Python 中 , 可以使用 try-except 语句来 捕获 和 处理异常 ;
2、捕获并处理指定异常
在 Python 中 , 可以捕获指定类型的异常 , 语法如下 :
try:
可能出现异常的代码块
except 异常类型 as 异常别名:
出现异常后执行的代码块
可使用异常别名获取异常对象
3、代码实例 - 捕获并处理指定异常
代码示例 :
"""
文件操作 代码示例
"""
try:
open("file3.txt", "r", encoding="UTF-8")
except FileNotFoundError as e:
print(f"出现异常, 进行异常处理, 异常内容 : {e}")
open("file3.txt", "w", encoding="UTF-8")
执行结果 :
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py
出现异常, 进行异常处理, 异常内容 : [Errno 2] No such file or directory: 'file3.txt'
Process finished with exit code 0
4、代码实例 - 异常捕获失败案例
如果捕获异常时 , 没有捕获到正确的异常 , 则异常仍然会爆出 , 程序会被终止 ;
在下面的代码中 , 捕获的是 FileNotFoundError , 如果出现了其他类型的异常 , 如 ZeroDivisionError , 则会直接导致程序停止运行 ;
下面的代码中执行了 num = 1 / 0
代码 , 会报 ZeroDivisionError 异常 ;
代码示例 :
"""
文件操作 代码示例
"""
try:
num = 1 / 0
open("file3.txt", "r", encoding="UTF-8")
except FileNotFoundError as e:
print(f"出现异常, 进行异常处理, 异常内容 : {e}")
open("file3.txt", "w", encoding="UTF-8")
执行结果 :
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py
Traceback (most recent call last):
File "/Users/zyq/PycharmProjects/Hello/main.py", line 6, in <module>
num = 1 / 0
ZeroDivisionError: division by zero
Process finished with exit code 1
二、Python 捕获多个类型异常
1、捕获多个异常语法
捕获多个异常语法 :
try:
可能出现异常的代码块
except (异常类型1, 异常类型2, 异常类型3, ...) as 异常别名:
出现异常后执行的代码块
可使用异常别名获取异常对象
2、代码实例 - 捕获多个异常
在下面的代码中可能出现 FileNotFoundError, ZeroDivisionError 两种异常 , 在进行异常捕获时同时捕获这两种异常 ;
执行时 , 如果出现了这两种异常中的一种, 异常会被捕获 , 并进行处理 ;
代码示例 :
"""
文件操作 代码示例
"""
try:
num = 1 / 0
open("file3.txt", "r", encoding="UTF-8")
except (FileNotFoundError, ZeroDivisionError) as e:
print(f"出现异常, 进行异常处理, 异常内容 : {e}")
执行结果 :
/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py
出现异常, 进行异常处理, 异常内容 : division by zero
Process finished with exit code 0