Jawaban:
Metode "def" dapat berfungsi sebagai pernyataan "mulai":
def foo
...
rescue
...
end
do/ endliteral blok membentuk blok pengecualian implisit.
rescue TypeError; rescue NameError- atau Anda dapat memisahkan koma kelas pengecualian, misalnyarescue TypeError, NameError
Anda juga dapat menyelamatkan inline:
1 + "str" rescue "EXCEPTION!"
akan mencetak "PENGECUALIAN!" karena 'String tidak dapat dipaksa masuk ke Fixnum'
StandardErrordan semua subkelasnya, seperti NameError- artinya bahkan kesalahan ketik dalam kode Anda tidak akan menimbulkan kesalahan .. Lihat thinkbot.com/blog/don-t-inline-rescue-in- ruby .
Contoh:
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
Di sini, defsebagai beginpernyataan:
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