Обработка исключений в Ruby в блоке else

Итак, у меня есть классическая обработка исключений ruby:

begin
    # do work here
rescue SafeShutdown => e
    # prevent loss of data and safely shutdown
rescue SystemExit => e
    # print #{e} and continue
else
    # how can I get #{e} here to get error message
    # so I can behave like in previous rescue
    # 
    # print #{e} and continue
end

Мой вопрос заключается в том, как я могу получить "е" распечатать в регистраторе в другой части блока.

1 ответ

Решение

В begin rescue блок else вызывается только тогда, когда не возникает исключение, т.е. не было выдано никакой ошибки. Попробуй это:

begin
  # do work here
rescue SafeShutdown => e
  # print e
rescue SystemExit => e
  # print e
else
  # this will only run when no exceptions are thrown
ensure
  # this will always run
end
Другие вопросы по тегам