У меня есть функция, которая перехватывает все исключения, и я хочу получить трассировку в виде строки внутри этой функции.
Пока это не работает:
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
), но этот другой вопрос не касается того, как использовать этот кадр. - person mulllhausen   schedule 13.12.2013handle_errors
ссылка error['traceback'] назначается repr() дляtraceback.print_tb(error_traceback))
, в то время как учетная запись исключения говорит, что это repr() изerror_traceback.print_exc())
- person eyquem   schedule 13.12.2013This question may already have an answer here:
вверху моего исходного поста - person mulllhausen   schedule 14.12.2013