【发布时间】:2014-08-04 10:31:06
【问题描述】:
我有:
- 调用外部供应商代码的函数
call_vendor_code(); - 异常类
MyDomainException(Exceprion)。
我知道函数call_vendor_code() 可以抛出MyDomainException(因为函数中的逻辑是我的)。但是我如何知道子调用中call_vendor_code() 中可能会抛出哪些供应商代码异常?
例子:
def call_vendor_code():
if not vendor.package.module.make_more_love():
raise MyDomainException('Not enough love.')
供应商代码可能会引发我无法处理的任何其他异常。可以从供应商代码中拦截所有异常,但我认为这是不好的解决方案。
def call_vendor_code():
try:
if not vendor.package.module.make_more_love():
raise MyDomainException('Not enough love.')
except Exception, e:
raise MyDomainException(e)
如何与其他级别的异常交互/不交互?
【问题讨论】:
-
为什么这是一件坏事?为了确保包装所有异常,需要做一些事情。
-
@simeon-visser 例如,我们丢失了回溯。
-
是的,但这是 Python 问题,而不是应用程序逻辑问题。包装异常仍然可以。 Python 3 在这方面做了改进:blog.ionelmc.ro/2014/08/03/…
标签: python exception exception-handling code-organization