python: получить полную информацию об исключении

Рейтинг: 0Ответов: 2Опубликовано: 19.04.2023

есть такой код:

print(func(123))

при попытке выполнить получаю ошибку:

Traceback (most recent call last):
  File "debug.py", line 1, in <module>
    print(func(123))
          ^^^^
NameError: name 'func' is not defined

Если ловлю исключение:

try:
    print(func(123))
except BaseException as e:
    print(e)

то получаю лишь такую информацию:

name 'func' is not defined

А можно ли через исключения получить полную информацию, в том числе информацию о файле в котором возникло исключение и номер строки на которой произошло исключение?

Ответы

▲ 2Принят

Стандартный модуль traceback позволяет получить такую информацию. Можно напечатать, можно получить в виде строк всё, что нужно.

Примеры там сильно отличаются для разных версий питона, поэтому код не даю.

▲ 2

Есть функция sys.exc_info:

>>> import sys
>>> try:
...     1/0
... except:
...     print(sys.exc_info())
... 
(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero'), <traceback object at 0x...>)
>>> 

Подробнее в документации.