Как получить номер строки, по которой произошло исключение или ошибка в Python? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть запрос Django ORM, подобный следующему:

try:
    specialization_object = Specialization.objects.get(name="My Test Specialization")
except Exception as ex:
    print(ex)

Когда возникает исключение, он выводит «Запрос на сопоставление специализации не существует», но не печатает номер строки.Как я могу отследить номер строки, на которой произошло исключение или ошибка?

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Если вы не можете по какой-либо причине использовать ведение журнала, есть стандартный пакет traceback , и вы можете сделать что-то вроде:

traceback.print_exc(file=sys.stdout)
0 голосов
/ 05 июня 2018

Я только что нашел простое решение:

import traceback
try:
    specialization_object = Specialization.objects.get(name="My Test Specialization")
except Exception as ex:
    print(traceback.format_exc())
0 голосов
/ 05 июня 2018

попробуйте это:

import logging
logger = logging.getLogger(__name__)

try:
    specialization_object = Specialization.objects.get(name="My Test Specialization")
except Exception as ex:
    logger.info(ex, exc_info=True) # exc_info will add traceback

дальнейшее чтение см. здесь

...