07 Июл 2023
2 мин
71

Ловля и вывод полной трассировки исключений в Python без остановки программы

Бывают ситуации, когда необходимо перехватывать исключения в коде Python, но при этом не прекращать выполнение всей программы. При этом хотелось бы иметь

Содержание

Бывают ситуации, когда необходимо перехватывать исключения в коде Python, но при этом не прекращать выполнение всей программы. При этом хотелось бы иметь возможность выводить не только информацию об исключении, но и полную трассировку, которая позволяет увидеть, на каком этапе и в каком месте кода произошло исключение.

Рассмотрим типичный пример кода, который перехватывает исключения:

try:
    # блок кода, в котором может возникнуть исключение
    do_something()
except Exception as err:
    print(Exception, err)

В этом примере при возникновении исключения в функции do_something() это исключение будет перехвачено и вместо остановки программы будет выведена информация об исключении. Однако, эта информация включает в себя только тип исключения и его описание, но не содержит полной трассировки.

Для того, чтобы получить полную трассировку, можно воспользоваться модулем traceback из стандартной библиотеки Python. Этот модуль предоставляет функции для работы с трассировками и стековыми фреймами.

Изменим наш пример так, чтобы он выводил полную трассировку:

import traceback

try:
    # блок кода, в котором может возникнуть исключение
    do_something()
except Exception as err:
    print("Exception has occurred: ", err)
    traceback.print_exc()

Теперь при возникновении исключения, помимо информации об исключении, будет выведена полная трассировка, которая позволяет увидеть, в каком месте кода произошло исключение.

Таким образом, с помощью модуля traceback можно легко и просто получать полную информацию о возникших исключениях без остановки выполнения программы.

Содержание

Добавить комментарий

Определи профессию по рисунку