Ruby Language Gestire più eccezioni


Esempio

È possibile gestire più errori nella stessa dichiarazione di rescue :

begin
  # an execution that may fail
rescue FirstError, SecondError => e
  # do something if a FirstError or SecondError occurs
end

Puoi anche aggiungere più dichiarazioni di rescue :

begin
  # an execution that may fail
rescue FirstError => e
  # do something if a FirstError occurs
rescue SecondError => e
  # do something if a SecondError occurs
rescue => e
  # do something if a StandardError occurs
end

L'ordine dei blocchi di rescue è rilevante: la prima partita è quella eseguita. Pertanto, se si imposta StandardError come prima condizione e tutte le eccezioni ereditate da StandardError , le altre istruzioni di rescue non verranno mai eseguite.

begin
  # an execution that may fail
rescue => e
  # this will swallow all the errors
rescue FirstError => e
  # do something if a FirstError occurs
rescue SecondError => e
  # do something if a SecondError occurs
end

Alcuni blocchi hanno una gestione delle eccezioni implicita come def , class e module . Questi blocchi ti consentono di saltare l'istruzione di begin .

def foo
    ...
rescue CustomError
    ...
ensure
    ...
end