Можно ли отменить исключение, которое не было обнаружено?

У меня есть ситуация, когда я хочу использовать пользовательский sys.excepthook. Когда программа выдает исключение, вызов sys.except вызывает вызов и делает некоторые вещи.

Пример:

import sys def ehook(exctype, value, traceback): t = 'Keys' if exctype == AttributeError and value.args[0].split("'")[1] == t: print "t %s" % (t,) else: sys.__excepthook__(exctype, value, traceback) sys.excepthook = ehook class Keys(): @staticmethod def x(): print "this is Keys.x()" if __name__ == "__main__": Keys.x() Keys.noexist() print "I want to continue here and beyond..." 

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

One Solution collect form web for “Можно ли отменить исключение, которое не было обнаружено?”

Нет. К тому времени, sys.excepthook вызывается sys.excepthook , исключение уже не отображается на верхнем уровне, и программа выйдет после того, как sys.excepthook свою работу. (См. Документацию .) В целом исключения не возобновляются в Python: вы обрабатываете их там, где вы их ловите, вы не можете просто продолжать с того места, где они были. См. Эту тему для обсуждения.

Изменить. Основываясь на вашем комментарии, это не похоже на то, что вы пытаетесь поймать все исключения в своей программе. Вы просто хотите поймать неопределенные запросы атрибутов на определенные объекты. Если это так, просто определите __getattr__ в своем классе.

  • traceback.print_exc () вопрос python
  • Python try / except: использование нескольких параметров
  • Любое значение при перехвате исключения и немедленном его повторении?
  • Исключительные возможности улова в python
  • Обработка произвольного исключения, печать сообщения об исключении по умолчанию
  • Почему я не могу поймать это исключение python?
  • Инкапсуляция попыток в блок `with`
  • Sub-class float type в Python, не удается поймать исключение в __init __ ()
  • Обработка исключений HTTP Python
  • Предыдущая ошибка маскируется текущим контекстом исключения
  • Проверка имени модуля внутри 'except ImportError'
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.