Бывают ситуации, когда необходимо перехватывать исключения в коде 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
можно легко и просто получать полную информацию о возникших исключениях без остановки выполнения программы.
Добавить комментарий