Исключение прохождения в 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 и метаризовать ее где-то в другом месте, даже если на этом пути были встречены другие исключения.

  • Python: не удается поймать IndexError
  • Почему «кроме исключения» не улавливает SystemExit?
  • Можно ли отменить исключение, которое не было обнаружено?
  • Проверка имени модуля внутри 'except ImportError'
  • Можно ли правильно обрабатывать ошибки синтаксиса?
  • Повторно назначить исключение из блока python __exit__
  • Исключение Django - catch
  • Каковы некоторые изящные способы абстрагирования повторяющейся обработки исключений в python?
  • Python try / except: использование нескольких параметров
  • Python 2.7 попробуйте и за исключением ValueError
  • Имеет ли какое-либо исключение только рейз?
  •  
    Interesting Posts for Van-Lav

    Twitter Streaming: Получите тенденции в Twitter на основе стран

    «Python» не распознается как команда

    Максимум два кортежа

    Получить количество работников из пула процессов в модуле многопроцессорности python

    Может ли временный файл flymake быть создан во временном каталоге системы?

    Ошибка пользовательской команды Django: непризнанные аргументы

    Не удалось настроить Anaconda на Windows: проблемы с контуром

    Как я могу получить количество строк в зависимости от psycopg2 connection.commit ()?

    Как закодировать текст на base64 в python

    Терминал Pycharm не изменяет версию Python, соответствующую версии Python, в Project Interpreter

    панды: считать вещи

    Почему оптимизация хвостовой рекурсии быстрее, чем обычная рекурсия в Python?

    process.stdout.readline () зависает. Как правильно использовать его?

    разница между добавлением списков в python с + и + =

    Python: TypeError – не все аргументы, преобразованные во время форматирования строки

    Python - лучший язык программирования в мире.