Ruby Language Gestion de plusieurs exceptions


Exemple

Vous pouvez gérer plusieurs erreurs dans la même déclaration de rescue :

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

Vous pouvez également ajouter plusieurs déclarations de 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'ordre des blocs de rescue est pertinent: le premier match est celui exécuté. Par conséquent, si vous placez StandardError comme première condition et que toutes vos exceptions héritent de StandardError , les autres instructions de rescue ne seront jamais exécutées.

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

Certains blocs ont une gestion implicite des exceptions comme def , class et module . Ces blocs vous permettent d'ignorer l'instruction begin .

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