Yanıtlar:
Bir "def" yöntemi bir "başlangıç" ifadesi işlevi görebilir:
def foo
...
rescue
...
end
do/ endblok değişmezleri örtük istisna blokları oluşturur.
rescue TypeError; rescue NameError- ya da istisna sınıflarını virgülle ayırabilirsiniz, örneğinrescue TypeError, NameError
Ayrıca hat içinde kurtarabilirsiniz:
1 + "str" rescue "EXCEPTION!"
"EXCEPTION!" çünkü 'Stringnum'a zorla sokulamaz'
StandardErrorve tüm alt sınıfları gibi, iyi bir uygulama değildir NameError- yani kodunuzdaki bir yazım hatası bile bir hata oluşturmaz .. Bkz. Thinkbot.com/blog/don-t-inline-rescue-in- yakut .
Misal:
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
Burada defbir beginaçıklama olarak:
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