2009-10-09 16 views
93

मैं इसे कैसे बस अपने आप ही बचाव ब्लॉक का उपयोग करता है एक बचाव अंतकैसे रूबी में एक प्रयोग बचाव शुरू और समाप्त ब्लॉक

शुरू होने के मानक तकनीक के बारे में पता के बिना नहीं करता है।

यह कैसे काम करता है और यह कैसे पता लगाता है कि किस कोड की निगरानी की जा रही है?

+2

http://www.rubyinside.com/21-ruby-tricks-902.html – Vik

उत्तर

189

एक विधि "def" एक "शुरू" बयान के रूप में काम कर सकते हैं:

def foo 
    ... 
rescue 
    ... 
end 
+0

धन्यवाद मैं तो बस जानना चाहता था कि यह कैसे काम करता है। जो कुछ मैं ढूंढ रहा था वह काफी है। धन्यवाद। – Sid

+2

इसके अलावा, कक्षा परिभाषाएं, मॉड्यूल परिभाषाएं और (मुझे लगता है) 'do' /' end' ब्लॉक अक्षर स्पष्ट अपवाद ब्लॉक बनाते हैं। –

+0

क्या आप डिफ बचाव सुनिश्चित कर सकते हैं? –

41

तुम भी इनलाइन बचाव कर सकते हैं: "अपवाद"

1 + "str" rescue "EXCEPTION!" 

बाहर प्रिंट होगा के बाद से

+1

आप अपवाद बैकट्रैक इनलाइन को कैसे बचाते हैं और दिखाते हैं? –

+0

वास्तविक अपवाद कैसे वापस करें? – user1735921

21

'स्ट्रिंग Fixnum मजबूर नहीं किया जा सकता' मैं डीईएफ़/बचाव संयोजन ActiveRecord सत्यापन के साथ एक बहुत उपयोग कर रहा हूँ:

def create 
    @person = Person.new(params[:person]) 
    @person.save! 
    redirect_to @person 
rescue ActiveRecord::RecordInvalid 
    render :action => :new 
end 

मुझे लगता है कि यह बहुत ही दुबला कोड है!

14

उदाहरण:

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 
एक begin बयान के रूप में

यहाँ, def:

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 
संबंधित मुद्दे