首页 > 解决方案 > python 3.5+中如何在没有原始回溯的情况下在except块中引发异常

问题描述

库代码可以引发自定义库异常;我想抓住那个并提出我自己的异常,而不附加原始异常和原始回溯信息:

    try:
        can_raise_custom_lib_exception()
    except custom_lib_exception as e:
        cleanup()
        raise myOwnException("my own extra text")

以这种方式抛出原始异常(带有回溯),消息:

在处理上述异常的过程中,又出现了一个异常:

显示后跟 MyOwnException(带有回溯)。

是否可以隐藏原始异常并仅显示我的异常?看起来 python 3.5+ 将回溯信息附加到错误中,我想完全隐藏第一个。

标签: pythonpython-3.xexception

解决方案


用于raise from None抑制较早的异常:

try:
    can_raise_custom_lib_exception()
except custom_lib_exception as e:
    cleanup()
    raise myOwnException("my own extra text") from None

7.8. 加薪声明

[...]可以通过在子句中
指定来显式抑制异常链接:Nonefrom


推荐阅读