Réponses:
Une méthode "def" peut servir d'instruction "begin":
def foo
...
rescue
...
end
do
/ end
les littéraux de bloc forment des blocs d'exceptions implicites.
rescue TypeError; rescue NameError
- ou vous pouvez séparer les classes d'exception par des rescue TypeError, NameError
Vous pouvez également sauver en ligne:
1 + "str" rescue "EXCEPTION!"
imprimera "EXCEPTION!" puisque 'String ne peut pas être forcé dans Fixnum'
StandardError
et toutes ses sous-classes, comme NameError
- ce qui signifie que même une faute de frappe dans votre code ne soulèvera pas d'erreur. Voir thinkingbot.com/blog/don-t-inline-rescue-in- rubis .
Exemple:
begin
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end
Ici, def
en guise de begin
déclaration:
def
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end