假设我正在使用一个库 X ,例如指定 exception.BaseErrorX 的所有异常的基类。

现在,还有另一个异常(exception),比如 X.FooError ,它当然继承自 exception.BaseError 但更通用,假设它处理无效输入。让我们假设还有许多其他这样的类,从 BaseError 继承,但都适用于一般情况。

 X
 |
BaseError
 |
FooError

所以我想然后检查无效输入。那么我应该捕捉哪个异常?当然,捕获每个单独的异常是不可能的,所以我捕获 X.BaseError 然后打印错误消息。或者我可以专门捕获 X.FooError 但随后我会错过所有其他错误情况。

这是标准的做法吗——捕获基本异常?如果是,那么为什么存在其他异常(exception)?对于我们想要捕获特定异常的一般情况?

最佳答案

仅捕获您可以处理的异常。如果您可以处理基本异常和派生异常,则同时捕获两者。但请确保将派生异常放在首位,因为第一个发现匹配的异常处理程序是使用的异常处理程序。

try:
  X.foo()
except X.FooError:
  pass
except X.BaseError:
  pass

关于python - 决定在 Python 中捕获哪些异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6199884/

10-12 12:21
查看更多