为什么traceback.format_exception需要一个traceback参数而不是使用ex .__ traceback__?

时间:2013-08-26 01:42:57

标签: python logging

我一直在关注traceback module,我试图理解为什么format_exception需要第三个参数的追溯,而不是使用__traceback__。我尝试在我的代码中传递它,它工作正常

1 个答案:

答案 0 :(得分:1)

回溯模块来自当前异常层次结构之前。注意,没有一个函数明确提到异常对象;它们都是指类型,价值和追溯。在现代Python中,值始终是一个异常对象,其他参数是多余的,但在古老版本的Python中,异常类型可能是字符串。在这种情况下,你会引发像

这样的异常
raise some_module.exception_string, some_arbitrary_object

some_arbitrary_object将用作异常值,而不是传递给异常构造函数来创建异常值。你不会有一个可以检查类型和回溯的异常对象,所以你必须分别传递所有3条信息。

有关详细信息,请参阅raiseGuido's article on how exceptions came to be classes的Python 2.0文档。