gpt4 book ai didi

python - 我是否应该始终在 `except` 语句中指定异常类型?

转载 作者:IT老高 更新时间:2023-10-28 21:12:41 25 4
gpt4 key购买 nike

在使用 PyCharm IDE 时,使用不带异常类型的 except: 会触发 IDE 提醒该异常子句 Too broad

我应该忽略这个建议吗?还是 Pythonic 总是指定异常类型?

最佳答案

指定明确的异常类型几乎总是更好。如果您使用裸 except: 子句,您最终可能会捕获到您希望捕获的异常之外的异常 - 这可能会隐藏错误或使调试程序变得更加困难期待。

例如,如果您要向数据库中插入一行,您可能希望捕获一个表明该行已存在的异常,以便进行更新。

try:
insert(connection, data)
except:
update(connection, data)

如果您指定一个纯 except:,您还会捕获一个套接字错误,指示数据库服务器已崩溃。最好只捕获您知道如何处理的异常 - 程序在异常点失败通常比继续但以奇怪的意外方式表现要好。

您可能想要使用纯 except: 的一种情况是您需要始终运行的程序的顶层,例如网络服务器。但是,您需要非常小心地记录异常,否则将无法找出问题所在。基本上,一个程序中最多应该只有一个地方可以做到这一点。

所有这一切的一个必然结果是你的代码不应该执行 raise Exception('some message') 因为它强制客户端代码使用 except: (或 except Exception: 几乎一样糟糕)。您应该定义一个特定于您要发出信号的问题的异常(可能继承自一些内置异常子类,如 ValueErrorTypeError)。或者你应该提出一个特定的内置异常。这使您的代码的用户能够小心地捕获他们想要处理的异常。

关于python - 我是否应该始终在 `except` 语句中指定异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com