Альтернатива "Спасению Исключений"
Иногда я получаю неожиданные ошибки, такие как ошибки тайм-аута, ошибки 503 и т. Д. Есть ошибки, о которых я даже не знаю, которые я могу получить. Я не могу объяснить их всех, делая что-то вроде:
rescue Timeout::Error => e
Это также ужасная идея, чтобы спасти Exception
,
Какую альтернативу я мог бы использовать? Я хочу, чтобы мой код спас их всех при возникновении ошибки; если нет ошибки, мне нужно ее избежать. Я хочу иметь возможность убить мой скрипт, но не пропустить синтаксические ошибки и т. Д.
1 ответ
Вы можете спасти для StandardError
Или просто спасение, которые одинаковы:
rescue StandardError => e
# or
rescue => e
В следующей таблице вы можете увидеть, какие исключения были спасены из StandardError
- Обратите внимание, что они являются подмножеством из Exception
и, в принципе, должны быть ошибки, которые можно подловить.
Конечно, у вас могут быть драгоценные камни, которые определяют исключение в неправильном месте, но это не должно происходить в хорошо развитых драгоценных камнях.
http://rubylearning.com/images/exception.jpg
Лично мне нравится спасать только те исключения, которые я знаю, как обрабатывать, за исключением случаев, когда это необходимо добавить в систему log/backtrace для последующего просмотра ошибок. Если это так, я обычно спасаю StandardError