2010-03-29 13 views
5

यदि आप rb_raise का उपयोग करते हुए एक समारोह के रूप में रूबी विधि लिखते हैं, तो कॉल के बाद फ़ंक्शन का हिस्सा निष्कासित नहीं होगा और प्रोग्राम रुक जाएगा और आपको लगता है कि rb_raiseexit() का उपयोग किया गया था। लेकिन अगर आप माणिक में अपवाद की तरह बचाव:रूबी के आरबी_राइज सी फंक्शन के निष्पादन को कैसे रोकता है?

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

गहरे लाल रंग का कोड पर जाना होगा, लेकिन अपने समारोह excecuting बंद हो जाएगा। rb_raise यह कैसे होता है?

उत्तर

5

संभवतः यह setjmp (विधि कहने से पहले) और longjmp (rb_raise में) का उपयोग करता है।