Odpowiedzi:
Metoda „def” może służyć jako instrukcja „begin”:
def foo
...
rescue
...
end
do/ endliterały blokowe tworzą niejawne bloki wyjątków.
rescue TypeError; rescue NameError- lub możesz oddzielić klasy wyjątków przecinkami, np.rescue TypeError, NameError
Możesz także uratować inline:
1 + "str" rescue "EXCEPTION!"
wydrukuje "WYJĄTEK!" ponieważ `` Ciąg nie może być wymuszony na Fixnum ''
StandardErrori wszystkie jego podklasy, na przykład NameError- co oznacza, że nawet literówka w kodzie nie spowoduje błędu. Zobacz thinkbot.com/blog/don-t-inline-rescue-in- rubin .
Przykład:
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
Tutaj, defjako beginoświadczenie:
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