在一个except
块中,我想引发相同的异常,但没有堆栈跟踪,也没有该异常已作为另一个异常的直接原因引发的信息。(并且无需sys.tracebacklimit
全局修改)
此外,我有一个非常笨拙的异常类,它解析和修改消息文本,所以我不能只是重现它。
我目前的做法是
try:
deeply_nested_function_that_raises_exception()
except ClumsyExceptionBaseClass as exc:
cls, code, msg = exc.__class__, exc.code, exc.msg
raise cls("Error: %d %s" % (code, msg))
我在这里做的是分解异常信息,重新组装一个带有消息的新异常,该消息将被解析并在构造函数中拆分为错误代码和消息,并从except
块外部引发它以便忘记所有跟踪信息。
有没有更蟒蛇的方式来做到这一点?我想要的只是摆脱嘈杂的(在我的情况下是无用的)追溯,同时保留异常对象中包含的信息..