Python 如何将回溯对象(sys.exc_info()[2],与sys.exc_traceback相同)作为字符串获取?

Python 如何将回溯对象(sys.exc_info()[2],与sys.exc_traceback相同)作为字符串获取?,python,string,data-conversion,traceback,string-conversion,Python,String,Data Conversion,Traceback,String Conversion,我有一个捕获所有异常的函数,我希望能够在这个函数中以字符串的形式获取回溯 到目前为止,这还不起作用: def handle_errors(error_type, error_message, error_traceback): """catch errors""" import traceback error = {} error['type'] = error_type.__name__ error['message'] = str(error_mess

我有一个捕获所有异常的函数,我希望能够在这个函数中以字符串的形式获取回溯

到目前为止,这还不起作用:

def handle_errors(error_type, error_message, error_traceback):
    """catch errors"""
    import traceback
    error = {}
    error['type'] = error_type.__name__
    error['message'] = str(error_message)
    error['file'] = os.path.split(error_traceback.tb_frame.f_code.co_filename)[1]
    error['line'] = error_traceback.tb_lineno
    error['traceback'] = repr(traceback.print_tb(error_traceback))
    ### finalise error handling and exit ###

sys.excepthook = handle_errors
这是错误的
错误['traceback']
行。我甚至需要使用
回溯
模块吗

根据,我已尝试:

error['traceback'] = repr(error_traceback.print_exc())
…但这会产生一个错误:

Error in sys.excepthook:
Traceback (most recent call last):
  File "xxxxxxxxxxx", line 54, in handle_errors
    error['traceback'] = repr(error_traceback.print_exc())
AttributeError: 'traceback' object has no attribute 'print_exc'
使用而不是
print_tb()
获取格式化堆栈跟踪(作为行列表):

print_tb()
直接打印回溯,这就是为什么会得到
None
(这是任何不显式返回任何内容的Python函数的默认值)

traceback.format\u exc([limit])

这是
类似于print\u exc(limit)
但是 返回字符串而不是打印到文件

版本2.4中的新功能


该问题的可能重复不适用。我会更新我的问题,解释为什么会这样。请看我的答案。你为什么写下你的问题不适用?@eyquem不是关于在excepthook函数中捕获回溯。excepthook函数提供了一个用于查询的回溯框架(
error\u traceback
),但其他问题没有解决如何使用此框架。我不明白你说什么,因为“其他问题”?还有哪一个问题?你的回答让我找到了准确的答案。这不起作用,因为卢卡斯G.在你之前发布的公认答案中指出了原因。
error['traceback'] = ''.join(traceback.format_tb(error_traceback))
error['traceback'] = traceback.format_exc(error_traceback)