有没有办法从 Python 中嵌套的 try 块内的链式加注中获取原始堆栈跟踪?

问题描述

因此,在我想使用自定义消息引发异常的情况下,该异常包含在错误处理函数中,目的是格式化错误消息,如何获取原始回溯而不是在引发时将其切断? 示例:

import functools
import traceback


def error_handler():
    def decorated(f):
        @functools.wraps(f)
        def wrap_func(*args,**kwargs):
            try:
                return f(*args,**kwargs)
            except (AssertionError) as e:
                # DO SOME ERROR MESSAGE FORMATTING
                traceback.print_tb(e.__traceback__)

        return wrap_func

    return decorated


@error_handler()
def fail():
    try:
        assert 2 == 5
    except AssertionError as e:
        raise AssertionError("Custom Message") from e


fail()

所以在这种情况下,打印的堆栈跟踪将打印

raise AssertionError("Custom Message") from e

不是断言错误

我猜第二个除了将加薪捕获为一个新的异常而不是一个链接的异常,但无论如何都可以用自定义消息冒泡吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)