我有一个函数可以捕获所有异常,我希望能够在此函数内将追溯信息转换为字符串。
目前这样做并没有成功:
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
错误在 error['traceback']
这一行。我甚至需要使用 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'
error_traceback
),但那个问题并没有解决如何使用这个帧的问题。 - mulllhausentraceback.print_tb(error_traceback)
的repr(),而异常的描述说它是error_traceback.print_exc()
的repr()。 - eyquem