Python:从另一个初始化异常(例如 raise ... from 但没有 raise)

问题描述 投票:0回答:1

我正在开发一段 FastAPI 应用程序代码,该代码(已经)具有一些异常处理功能,其中处理程序接收异常作为函数参数,一些异常被转换为其他异常,然后传递给其他处理程序函数。我的任务是记录它们,并且我希望能够保留所有 stactrace,包括因转换其他异常而导致的异常。但是,当调用

return MyNewException(old_exc.args)
时,第一个异常的所有堆栈跟踪都会丢失。

我知道如果您

raise MyNewException(old_exc.args) from old_exc
,您可以附加到 stactrace,但这里没有引发,仅传递在其他地方引发和捕获的异常。

有没有办法可以将原始异常中的堆栈跟踪合并到我的情况中?

python exception
1个回答
0
投票

事实证明,你可以这样做:

e1 = MyOtherException(e.args).with_traceback(e.__traceback__)
© www.soinside.com 2019 - 2024. All rights reserved.