答案:else子句用于未发生异常时执行代码,提升逻辑分离与可读性。示例中try无异常则执行else输出结果;结合finally可实现成功处理与清理工作分离,避免异常误捕,增强代码安全性与结构清晰度。
Python 中的 else 子句在异常处理中常被忽视,但它能显著提升代码的清晰度和逻辑分离。它不是用来“处理异常”的,而是用来定义“未发生异常时执行的代码”。
在 try-except 语句中,else 子句紧跟在所有 except 块之后,其作用是:当 try 块中没有抛出任何异常时,执行 else 块中的代码。
try:
result = 10 / x
except ZeroDivisionError:
print("不能除以零")
else:
print("计算成功,结果是:", result)
上面的例子中,只有当 x 不为 0(即未触发 ZeroDivisionError)时,else 块才会执行。如果 x 为 0,except 捕获异常,else 不执行。
使用 else 可以避免把“可能出错的代码”和“成功后的处理代码”混在一起,使逻辑更清晰。
一个完整的异常处理结构可以包含 try、except、else 和 finally:
try:
f = open('data.txt')
content = f.read()
except FileNotFoundError:
print("文件不存在")
else:
print("文件读取成功")
process(content) # 只有成功读取才处理内容
finally:
print("清理工作")
这里,else 确保 process() 只在文件成功打开并读取后调用,而 finally 无论成败都会执行清理。
基本上就这些。else 不是必须的,但在需要区分“无异常”和“有异常”路径时,它让代码更精确、更安全。不复杂但容易忽略。