Получение дважды возникших исключений оригинальной трассировки стека в python - PullRequest
4 голосов
/ 23 декабря 2009

Если у меня есть сценарий, где исключение возникает, перехватывается, а затем снова вызывается внутри блока исключений: есть ли способ перехватить начальный кадр стека, из которого оно было вызвано?

Трассировка стека, которая печатается при выходе из Python, описывает место, где исключение вызывается во второй раз. Есть ли способ вызвать исключение таким образом, чтобы отображался кадр стека, в котором первоначально было создано исключение?

1 Ответ

11 голосов
/ 23 декабря 2009

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

except Exception, ex:
     # do something
     raise ex

Удаляет исходную информацию о трассировке и запускает новую. Вместо этого вам следует сделать следующее без явного указания исключения (т. Е. Использовать «голое» raise):

except Exception, ex:
    # do something
    raise

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...