2010-03-29 9 views
5

rb_raise'u kullanan C'de bir işlev olarak bir yakut yöntemi yazarsanız, çağrıdan sonra işlevin bir kısmı beklenmedik olur ve program duracak ve rb_raiseexit() kullandığını düşüneceksiniz. Eğer böyle Ruby istisna kurtarmak Ama eğer:Ruby'nin rb_raise işlevi c işlevinin yürütülmesini nasıl durdurur?

begin 
    method_that_raises_an_exception 
rescue 
end 
puts 'You wil still get here.' 

yakut kod devam edecek, ancak işlevi excecuting duracaktır. rb_raise bunu nasıl yapıyor?

cevap

5

Muhtemelen, setjmp (yöntem çağrılmadan önce) ve longjmp (rb_raise'da) kullanır.

İlgili konular