Есть ли способ в предложении спасения поместить все ошибки в массив и вызвать их оттуда, если ошибка находится в массиве?
Например:
FATAL_ERRORS = %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)
begin
# Do some cool stuff
rescue FATAL_ERRORS => e
puts "Exiting #{e}"
Что я пробовал:
Я попытался получить ошибку из текущего потока:
FATAL_ERRORS = Thread.current[:errors] ||= %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)
begin
# Do some cool stuff
rescue FATAL_ERRORS => e
puts "Exiting #{e}"
Также я пробовал оператор splat:
FATAL_ERRORS = %w(Mechanize::ResponseCodeError RestClient::ServiceUnavailable OpenSSL::SSL::SSLError RestClient::BadGateway)
begin
# Do some cool stuff
rescue *FATAL_ERRORS => e
puts "Exiting #{e}"
И знак, и нить создают следующее исключение: rescue in <main>': class or module required for rescue clause (TypeError)
Как я могу успешно исправить несколько ошибок, не поместив их все в строку восстановления и не выставив ее в плохом свете?