2017-02-09 8 views
2

мне интересно, если есть стандартный механизм в питоне для этого случая использования:Повысить задержку исключения в python?

try: 
    do_a() 
    if something_happens(): 
     raise DelayedException # is really only raised after do_b() 
    do_b() 
except DelayedException as de: 
    # handle de after the entire try/except block completed 

Я мог бы, очевидно, просто хранить информацию об исключении в переменном для обработки позже, но мне интересно, если есть такой механизм, встроенный в python (3.x, если это имеет значение).

EDIT: Чтобы уточнить, в моем случае использование обработки исключений требует результата do_b().

+0

Что бы вы хотели бы произойти, если 'do_b()' поднял свое исключение? –

+2

Не завершает 'do_something()' в блоке try-finally (с помощью 'do_b()' в блоке finally)? – dhke

+2

Нет, не вещь. Это не похоже на использование для исключений; просто зарегистрируйте ошибку и проверьте ее позже. – user2357112

ответ

1

Да, но это некрасиво:

try: 
    do_a() 
    try: 
     if do_something(): 
      raise DelayedException() 
    finally: 
     do_b() 
except DelayedException: 
    pass 
+0

Это немного уродливо! Мне потребовалось несколько советов, чтобы понять, как это работает, поэтому я думаю, что это не хороший знак, и, вероятно, использование переменных сделает его понятным. –

 Смежные вопросы

  • Нет связанных вопросов^_^