Подтвердить что ты не робот

Исключение ререйза/перезаписи Python

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

Вот как это выглядит:

try:
   something
except SpecificError as ex:
   if str(ex) = "some error I am expecting"
      print "close softly"
   else:
      raise
except Exception as ex:
   print "did not close softly"
   raise

Я хочу, чтобы поднять в предложении else триггер заключительного оператора.

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

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

4b9b3361

Ответ 1

Вызывается только одно предложение except в блоке try. Если вы хотите, чтобы исключение было уловлено выше, вам нужно будет использовать вложенные блоки try.

Ответ 2

Как насчет написания 2 try... кроме блоков вроде этого:

try:
    try:
       something
    except SpecificError as ex:
       if str(ex) == "some error I am expecting"
          print "close softly"
       else:
          raise ex
except Exception as ex:
   print "did not close softly"
   raise ex

Ответ 3

В соответствии с python tutorial существует одно и только одно исключение для одного заявления try. В учебнике вы можете найти довольно простой пример, который также покажет вам, как правильно использовать форматирование ошибок.

Во всяком случае, почему вам действительно нужно второе? Не могли бы вы предоставить более подробную информацию об этом?