Найти - Пользователи
Полная версия: Вывод traceback в finally
Начало » Python для новичков » Вывод traceback в finally
1
PyNovice
Например есть код:
try:
    run()
except error.Exception:
    # отлов известной ошибки
    print('Exception')
finally:
    # print(traceback) если except не сработал
Собственно вопрос в том как можно через finally вывести traceback если except не выловил исключение, и соответственно ничего не вводить если программа отрабатывает в нормальном режиме.
Вообще цель - отловить известное исключение, и получить информацию о тех которые еще не выловлены. Или может это как-то можно более грамотно сделать?
ZZZ
try:
    run()
except error.Exception:
    # отлов известной ошибки
    print('Exception')
else:
    print("except не сработал")

finally нужен для других целей.
doza_and
мне нравится короткий вариант.
try:
raise Exception("aaa")
except:
print("badexcept")
>>>
badexcept

вообще traceback будет выведен по умолчанию. Ничего делать не надо.
JOHN_16
PyNovice
есть такой модуль traceback там есть функция format_exc() думаю она вам будет интересна, как и модуль в целом
PyNovice
doza_and
вообще traceback будет выведен по умолчанию. Ничего делать не надо.
Это небольшой бот с использованием Grab, запускаю просто через файл с исходником, и в результате работы иногда вылетают ошибки связанные с соединением, таймаут конечно самая простая, ее обработал, а вот еще какая-то бывает редко и она заканчивают работу скрипта. Можно конечно отлавливать все исключения и как советовал JOHN_16
print(traceback.format_exc())
ловить пока все не выловишь, просто думал может как-то более это красиво сделать: одну обрабатываем и печатаем вторую когда она появляется чтобы потом так же ее обработать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB