Как при oбработкe исключений и поиске строки с ошибкой воспользоваться exc_info()?

Для решения вопроса о поиске строки с ошибкой, англоязычные коллеги предлагают следующее решение:

import sys    
try:
    строка с ошибкой
except IndexError:
    #  Python 3
    print("Error on line {}".format(sys.exc_info()[-1].tb_lineno))

Все работает прекрасно. Однако, нет пояснения о том, что это такое

sys.exc_info()[-1].tb_lineno

Как я понял, метод exc_info() - это кортеж, а [-1] - это предпоследний индекс этого кортежа.

Не понятно, что за объект tb_lineno и что эти ребята делают все в общей связке.

Объясните, пожалуйста, что происходит в этой строке.


Ответы (1 шт):

Автор решения: MaxU

если хотите разобраться, то разбейте решение на части. Присвойте новой переменной значение

x = sys.exc_info()[-1]
print(x)

Посмотрите на тип значения:

print(type(x))

Проверьте какие атрибуты и методы есть у данного объекта:

print(dir(x))
→ Ссылка