在程序执行过程中,当出现代码异常的时候,第一通过异常信息的提示来修改代码,从而达到无异常的情况。
一、异常处理
基本语法:
1. try-except 块
try:尝试执行可能出错的代码
except:捕获并处理异常
try:
# 可能引发异常的代码
except SomeException:
# 处理异常的代码
2.捕获多个异常
处理不同类型的异常、Python 3.10+支持括号分组
try:
# …
except (TypeError, ValueError):
# 处理多个异常
except ZeroDivisionError:
# 单独处理一个异常

3. else 子句(无异常时执行)、finally 子句(始终执行)
else:当没有异常发生时执行的代码。
finally:无论是否发生异常都会执行的代码(常用于清理资源,如关闭文件)。
try:
# …
except IOError:
# …
else:
# 没有异常时执行
finally:
# 总是执行

二、主动抛出异常—-raise 语句
1.使用`raise`语句引发异常:
if age < 0:
raise ValueError(“年龄不能为负数”)
2.重新抛出异常
在`except`块中使用`raise`(不带参数)可以重新引发当前捕获的异常。
try:
# …
except SomeError:
print(“记录日志”)
raise # 重新抛出当前异常
三、自定义异常
创建自定义异常类,一般继承自`Exception`类。
class MyCustomError(Exception):
“””自定义异常示例”””
def __init__(self, message, code):
super().__init__(message)
self.code = code
# 使用
try:
raise MyCustomError(“自定义错误”, 1001)
except MyCustomError as e:
print(f”错误代码 {e.code}: {e}”)

四、结构化模式匹配(Python 3.10+)
用 match-case 处理异常类型:
try:
# …
except Exception as e:
match type(e):
case ValueError:
print(“值错误”)
case TypeError:
print(“类型错误”)
case _:
print(“其他错误”)
实例:
文件操作异常
try:
with open(“财务报告.xlsx”, “rb”) as f: # 自动关闭文件
data = f.read()
except FileNotFoundError:
print(“文件不存在,请检查路径”)
except PermissionError:
print(“请先关闭Excel文件”)
Excel数据处理异常
import pandas as pd
try:
df = pd.read_excel(“销售数据.xlsx”)
total = df[“销售额”].sum()
except KeyError:
print(“错误:表格中缺少'销售额'列”)
except ValueError as e:
if “日期” in str(e):
print(“日期格式错误,请检查B列”)
|
概念 |
关键点 |
应用场景 |
|
try-except |
捕获并处理异常 |
用户输入验证 |
|
else子句 |
无异常时执行 |
成功后的后续操作 |
|
finally子句 |
必须执行的清理工作 |
资源释放(文件/网络) |
|
raise |
主动抛出异常 |
业务规则检查 |
|
自定义异常 |
创建业务相关异常 |
领域特定错误处理 |
|
文件操作异常 |
FileNotFoundError, PermissionError |
办公自动化文件处理 |
|
数据格式异常 |
ValueError, KeyError |
Excel/CSV数据处理 |




35