2012-09-12 17 views
23

समय-समय पर ग्रोवी स्क्रिप्ट छोड़ने का सबसे अच्छा तरीका क्या है?समय-समय पर ग्रोवी स्क्रिप्ट छोड़ने का सबसे अच्छा तरीका क्या है (system.exit (0) को छोड़कर)

एक ग्रोवी स्क्रिप्ट किसी दिए गए जानकारी फ़ाइल से एक पंक्ति पढ़ती है तो सत्यापन विफल होने के मामले में कुछ सत्यापन कार्य करता है (असंगत डेटा) स्क्रिप्ट को समय-समय पर प्रवाह छोड़ने की आवश्यकता होती है।

read a row 
try{ 
    //make some verification here 
}catch(Exception e){ 
    logger("exception on something occurred "+e,e) 
    //here need to leave a groovy script prematurely 
} 
+1

पुनरारंभ करने के लिए जहां आपने छोड़ा आपकी समस्या होने जा रहा है ... आप जो कुछ भी ग्रूवी बुला रहा है अंदर पाश नहीं बदला जा सकता, और बस में प्रत्येक पंक्ति की पुष्टि स्क्रिप्ट? या शायद स्क्रिप्ट को एक BufferedReader पास कर सकते हैं जिसका उपयोग लाइनों को पढ़ने के लिए किया जा सकता है, लेकिन स्क्रिप्ट के आमंत्रण के बीच स्थिति बनाए रखेगा? –

+0

टिप्पणी के लिए धन्यवाद, मेरे मामले में सर्वर सभी नियमित नौकरी कर रहा है – Toren

+1

यह आपकी कोशिश पकड़ एक अन्य कोशिश के अंदर नहीं है, आप एक नया अपवाद –

उत्तर

18

बस System.exit(0) का उपयोग: तो फिर सिस्टम फाइल

कोड उदाहरण एक ही जानकारी की अगली पंक्ति को पढ़ने के लिए फिर से स्क्रिप्ट कॉल करेंगे।

try { 
    // code 
} catch(Exception e) { 
    logger("exception on something occurred "+e,e) 
    System.exit(0) 
} 

इंगित करने के लिए क्या लाइन आप के साथ समस्या नहीं थी बाहर निकलें स्थिति कोड इस्तेमाल कर सकते हैं।

एक शून्य मान इंगित करेगा कि सबकुछ ठीक था, और सकारात्मक मूल्य रेखा संख्या होगी। फिर आप अपनी ग्रोवी स्क्रिप्ट को इनपुट पैरामीटर के रूप में स्टार्ट लाइन ले सकते हैं।


यह एक खाली खाली होने पर केवल एक मूर्ख अपवाद के साथ एक निष्पक्ष कार्यान्वयन है।

file = new File(args[0]) 
startLine = args[1].toInteger() 

file.withReader { reader -> 
    reader.eachLine { line, count -> 
     try { 
      if (count >= startLine) { 
       if (line.length() == 0) throw new Exception("error") 
       println count + ': ' + line 
      } 
     } catch (Exception ignore) { 
      System.exit(count) 
     } 
    } 
} 
+1

फेंक सकते हैं सुझाव के लिए धन्यवाद लेकिन मैं system.exit (0) का उपयोग नहीं कर सकता मेरा मामला, (माफ करना मैंने शुरुआत में इसका जिक्र नहीं किया), मैं एक और समाधान – Toren

+3

@ टोरन ओके की तलाश में हूं, लेकिन अगर आप अधिक जानकारी के साथ अपना प्रश्न अपडेट कर सकते हैं तो यह बहुत अच्छा होगा। तो मुझे यकीन है कि आपको एक उत्तर मिलेगा जो आपकी आवश्यकताओं के अनुरूप है। – maba

+7

इससे जेनकींस शट डाउन – bicepjai

18

मुझे पूरा यकीन है कि आप केवल एक स्क्रिप्ट से 'वापसी' कर सकते हैं।

0

, बस का उपयोग वापसी:

read a row 
try{ 
    //make some verification here 
}catch(Exception e){ 
    logger("exception on something occurred "+e,e) 
    //here need to leave a groovy script prematurely 
    return 
} 
संबंधित मुद्दे