mul*_*sen 9 python string data-conversion string-conversion traceback
我有一个捕获所有异常的函数,我希望能够在此函数中将回溯作为字符串.
到目前为止,这不起作用:
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
Run Code Online (Sandbox Code Playgroud)
这error['traceback']
是错误的界限.我甚至需要使用该traceback
模块吗?
根据另一个模糊相似的问题,我试过:
error['traceback'] = repr(error_traceback.print_exc())
Run Code Online (Sandbox Code Playgroud)
...但这会产生错误:
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'
Run Code Online (Sandbox Code Playgroud)
Luk*_*raf 16
使用traceback.format_tb()
而不是print_tb()
获取格式化的堆栈跟踪(作为行列表):
error['traceback'] = ''.join(traceback.format_tb(error_traceback))
Run Code Online (Sandbox Code Playgroud)
print_tb()
直接打印回溯,这就是你得到None
结果的原因(这是任何Python函数的默认值,不会明确地返回任何内容).