Исключение прохождения в Python

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

Пример A:

>>> 3/0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 

Пример B:

 >>> try: 3/0 ... except Exception as e: raise e ... Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: integer division or modulo by zero 

В обоих этих примерах исключение действительно встречается в строке 1, где мы пытаемся сделать 3/0, но в последнем примере нам говорят, что это произошло в строке 2, где она поднята.

Есть ли способ в Python создать исключение, как если бы это было другое исключение, то, что создавало бы следующий результат:

 >>> try: 3/0 ... except Exception as e: metaraise(e) ... Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 

2 Solutions collect form web for “Исключение прохождения в Python”

Когда вы повторно поднимаете исключение, которое вы поймали, например

 except Exception as e: raise e 

он сбрасывает трассировку стека. Это похоже на повторное воссоздание нового исключения. Что вы хотите, так это:

 except Exception as e: raise 

Для справки, решение примерно следующее:

 def getException(): return sys.exc_info() def metaraise(exc_info): raise exc_info[0], exc_info[1], exc_info[2] try: 3/0 except: e = getException() metaraise(e) 

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

  • try / else с возвратом в блоке try
  • Python try / except: использование нескольких параметров
  • Повысить исключение против возврата Нет в функциях Python
  • Python игнорирует исключение и возвращается к тому, где я был
  • traceback.print_exc () вопрос python
  • Python 2.7 попробуйте и за исключением ValueError
  • Почему Python не выходит из повышенного исключения при выполнении с абсолютным путем?
  • Как сохранить значения traceback / sys.exc_info () в переменной?
  • Python - лучший язык программирования в мире.