Java printStackTrace() эквивалент в python
В python except block я хочу напечатать сообщение об ошибке, но я не хочу, чтобы программа прекратила выполнение, я понимаю, что мне нужно сделать что-то вроде этого
try:
1/0
except:
print errorMessage
В другой части, я хочу положить что-то вроде java printStackTrace()
Ответы
Ответ 1
Взгляните на traceback.print_exc()
, а остальная часть traceback
.
import traceback
try:
1/0
except:
print '>>> traceback <<<'
traceback.print_exc()
print '>>> end of traceback <<<'
Есть еще несколько примеров в конце страницы документации traceback
.
Ответ 2
Если вы действительно хотите получить сообщение об ошибке, вы можете просто распечатать ошибку (обратите внимание, как я указываю исключение в хорошей практике, см. pep8 для рекомендаций по ошибкам лова):
try:
1/0
except Exception as e:
print e
Однако, если вы хотите, чтобы стебель, как @Eddified сказал в комментарии, вы можете использовать этот пример в этом ответе. Или более конкретно для вашего случая:
import traceback
try:
1/0
except Exception as e:
print e
traceback.print_stack()
Ответ 3
Вы также можете использовать logging.exception
из модуля logging
. Он будет печатать текущую стек исключений исключения в регистраторе по умолчанию в качестве сообщения с серьезностью ERROR
.
Ссылка: http://docs.python.org/2/library/logging.html#logging.Logger.exception