我有哪里我赶上一个特定的异常类型,检查异常的消息,以检查它实际上是一个例外,我要赶,然后再提高异常,如果没有一种情况:
try:
# do something exception-prone
except FooException as e:
if e.message == 'Something I want to handle':
# handle the exception
else:
raise e
这工作得很好,有一个问题。 在我的情况下重新抛出异常,该异常现在发生在我行再次提出它(即raise e
),而不是在原来的位置发生异常。 这是不理想的调试,要知道原始异常发生的地点。
因此,我的问题:有没有什么办法来重新加注或以其他方式“转嫁”的异常捕获它在保持原有的异常位置后?
注意:如果你想知道实际情况是什么:我使用的是动态导入一些模块__import__
。 我赶上ImportError
优雅地与任何模块中不存在的情况下处理。 然而,在这些模块本身包含一些能提高导入语句的情况下ImportError
,我希望这些“真实”(但从我的应用程序的点)异常被提出-在原来的位置,只要调试工具有关。