2013-08-29 7 views
5

पुन: प्रयास मैं अपने स्क्रिप्ट में निम्न कोड ... हैरूबी बचाव और विशिष्ट कोड ब्लॉक

begin 
    #Loop to create 1000 emails... 
    #Loop to send 1000 emails... 

    rescue Timeout::Error => e 
    retry_attempts += 1 
    if retry_attempts < 10 
     retry 
    else 
     puts "Timeout error, deleting emails...".red 
     logs.puts("Rescued a timeout error...#{e}") 
     email_ids_all.each do |email_delete| 
     #delete all email... 
     end 

मेरा प्रश्न क्या retry वास्तव में "पुन: प्रयास" करने के लिए जा रहा है। यदि स्क्रिप्ट ने पहले से ही एक लूप में 1000 ईमेल जेनरेट किए हैं और उनमें से 999 अन्य लूप में भेजे हैं, और फिर यह 1000 वां ईमेल भेजने पर समय निकालता है- क्या यह उस कोड की विशिष्ट पंक्ति को फिर से प्रयास करेगा, जिस पर त्रुटि आई है, क्या यह लूप शुरू करेगा 1000 वें ईमेल के साथ, क्या यह पूरे लूप को शुरू करेगा, या यह दोनों लूप के माध्यम से चल रही स्क्रिप्ट की शुरुआत में शुरू होगा?

मैं रूबी 1.9.3 का उपयोग कर रहा हूं।

उत्तर

10

retryपूरेbegin ब्लॉक निष्पादित, अपने मामले सभी ईमेल छोरों फिर से चलेंगे में ऐसा होगा।

begin 
    (1..10).each do |x| 
    puts x 
    if x > 6 
     STDIN.gets # press enter to do another iteration 
     raise ArgumentException 
    end 
    end 
rescue 
    retry # loop will restart from 1 
end 
+0

उपयोगी जानकारी:

यहाँ एक त्वरित उदाहरण है, जो लगातार 7 के माध्यम से 1 पूर्णांकों प्रिंट होगा (CTRL-C के साथ समाप्त, के रूप में यह पाश अनंत जाएगा) है। सहायता के लिए धन्यवाद। – Luigi

+3

यहां एक लूप में 'पुनः प्रयास' का उपयोग करने पर वास्तव में एक अच्छी पोस्ट है http://blog.mirthlab.com/2012/05/25/cleanly-retrying-blocks-of-code-after-an-exception-in-ruby / – dennismonsewicz

संबंधित मुद्दे