Python 中的 异常 由 异常类 Exception Class 表示 , 每个异常类都代表一个特定的错误类型 ;
常见的 异常类 :
当发生异常时 , 程序会停止执行当前语句 , 并跳转到异常处理程序 Exception Handler , 该程序负责处理异常并防止程序崩溃 ;
在 Python 中 , 可以使用 try-except 语句来 捕获 和 处理异常 ;
在 Python 中 , 可以捕获指定类型的异常 , 语法如下 :
try:
可能出现异常的代码块
except 异常类型 as 异常别名:
出现异常后执行的代码块
可使用异常别名获取异常对象
代码示例 :
"""
文件操作 代码示例
"""
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
如果捕获异常时 , 没有捕获到正确的异常 , 则异常仍然会爆出 , 程序会被终止 ;
在下面的代码中 , 捕获的是 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
捕获多个异常语法 :
try:
可能出现异常的代码块
except (异常类型1, 异常类型2, 异常类型3, ...) as 异常别名:
出现异常后执行的代码块
可使用异常别名获取异常对象
在下面的代码中可能出现 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