正确、有效地引发异常可以让你开发出更健壮的程序和更高质量的代码。
下面是几个建议
1. 优先考虑特定异常而不是通用异常
应该提出最适合自己需要的特定异常,
这种做法可以帮助你追踪并修复问题和错误,而且也可以更加快速地定位核心问题。
try:
# 一些代码
except FileNotFoundError:
# 处理文件不存在的情况
except ValueError:
# 处理数值转换错误的情况
2. 提供错误消息并避免没有消息的异常
为所有异常编写描述性和明确的错误消息,
这样有问题的时候才能更加明确问题定位的方向。
try:
num = int("a")
except ValueError as e:
raise ValueError(f"无效的输入数据,请输入数字:{e}")
3. 优先使用内置异常而不是自定义异常
尝试为代码中的每个错误找到合适的内置异常,
确保与 Python 生态系统的其余部分保持一致,
这样作为熟悉常见异常的 Python 开发人员也能更好地理解代码。
def divide_numbers(a, b):
try:
return a / b
except ZeroDivisionError:
raise ZeroDivisionError("除数不能为零")
4. 避免引发 AssertionError 异常
此异常专门针对该 assert 语句,不适用于其他上下文。
这种异常一般适用于调试环境,
放在单元测试里面更加合适。
# 不建议在代码中使用 assert 语句引发异常
assert condition, "条件不满足"
5. 尽快引发异常
尽早地检查类似参数类型、值大小这种临界值错误,
可以避免让后续的代码处理很多冗余的条件,
代码也更加清晰。
def calculate_square_root(number):
if number