从异常中获取回溯而不重新引发异常

xan*_*ood 5 python exception traceback

我正在使用 Twister 构建服务器。我还维护服务器错误日志。问题是,如果我让异常在堆栈中一直运行,它会崩溃当前连接并断开用户连接,所以显然我附加了一个裸露的异常以获取其他所有内容。

一旦我捕获到某些内容,有没有办法将回溯作为字符串获取,以便我可以将其存储在某处/自己打印它,而无需引发它并让Python在程序崩溃时为我打印它?

jsb*_*eno 2

回溯模块包含一些用于打印和检查回溯的辅助函数(例如,traceback.print_tb) - 但重要的是回溯信息本身存储在模块 sys 上的“解释器全局”变量中 - sys.exc_traceback 。

\n\n

引用自:

\n\n

http://docs.python.org/reference/compound_stmts.html#try

\n\n
\n

在执行 except 子句\xe2\x80\x99s 套件之前,有关异常的详细信息将被分配给 sys 模块中的三个变量:\n sys.exc_type 接收标识异常的对象;\n sys.exc_value 接收异常\xe2\x80\x99s 参数;sys.exc_traceback\n 接收回溯对象...

\n
\n\n

您可以将 sys.exc_traceback 对象作为参数传递给traceback.print_tb,以将回溯打印到 except 子句中的 stdout。

\n