2013-02-13 8 views
8

यदि मैं जावा प्रोग्राम चलाने के लिए कुछ पूर्व शर्त मौजूद हैं तो जांचना चाहता हूं कि सबसे अच्छा क्या है?
कार्य करें: System.exit(1);जावा प्रोग्राम को कैसे रोकें यदि यह निर्धारित किया जाता है कि इसे नहीं चलाया जाना चाहिए?

या एक RuntimeExceptionmain में मुख्य थ्रेड समाप्त करने के लिए फेंक? (अभी तक चल रहा है कोई अन्य सूत्र)

+2

मैं अपवाद फेंकने के बजाय व्यक्तिगत रूप से बाहर निकलता हूं। –

+0

मुझे लगता है कि यह निर्भर करता है कि आपके प्रोग्राम का उपयोगकर्ता कौन है और आप उसे कैसे सतर्क करना चाहते हैं। यदि आपका प्रोग्राम सिर्फ एक सेवा है तो मैं System.exit() विकल्प के साथ जाऊंगा, क्योंकि मैं अपने लॉग में असफल अपवाद नहीं लेना चाहता हूं। यदि आपके प्रोग्राम में एक जीयूआई है तो आपको उपयोगकर्ता को उचित रूप से सतर्क करने की आवश्यकता होगी, इस प्रकार किसी भी प्रकार का अपवाद पकड़ा जाना चाहिए और एक संवाद बॉक्स को अंतिम उपयोगकर्ता को यह समझाना चाहिए कि कार्यक्रम क्यों बंद हो गया है। – nikkatsa

उत्तर

9

आदर्श रूप में आप अपने धागे शान से समाप्त। System.exit(1) भी काम करता है, लेकिन यह बेहतर होता है कि आपके थ्रेड सिग्नल हो जाएं कि उन्हें जो कुछ भी कर रहे हैं उसे रोकने और उन्हें पूरा करने के द्वारा समाप्त करने की आवश्यकता है (यानी अंत तक अपनी विधि को निष्पादित करना)। यह स्पष्ट रूप से आपके डिजाइन पर निर्भर करता है।

RuntimeException फेंकना बहुत ही अपमानजनक लगता है और आपको वह व्यवहार कर सकता है जो आप वास्तव में नहीं चाहते हैं।

1

नहीं आप मुझे कुछ इस तरह करना होगा तैनात क्या की तुलना में अधिक जानकारी होने:

public static void main(String[] args) { 
    boolean precondition = ... // determine your precondition here 
    if (precondition) { 
     // run program 
    } else { 
     System.out.println("Preconditions not satisfied."); 
    } 
} 
+0

अन्य जानकारी की आवश्यकता होगी? मैं जांचना चाहता हूं कि कुछ स्थितियां लागू होती हैं और यदि मुख्य धागे को समाप्त नहीं किया जाता है। – Jim

+0

@ जिम: फिर आप इसे मेरे उत्तर में पोस्ट करने का तरीका कर सकते हैं। – jlordo

+0

हां, यदि स्थिति पूरी नहीं हुई है, तो प्रोग्राम अंतिम पंक्ति (प्रिंट संदेश) पर जायेगा और समाप्त हो जाएगा – kiedysktos

1

आप exit पर कॉल करने से बेहतर हैं क्योंकि अपवादों का उपयोग प्रोग्रामिंग प्रवाह में त्रुटियों को पकड़ने और तदनुसार उनके साथ सौदा करने में आपकी सहायता के लिए किया जाता है।

उपयोगकर्ता के परिप्रेक्ष्य मुद्दों System.err के लिए आवेदन प्रिंट होने और फिर शान से बंद करने से ज्यादा एक स्टैक ट्रेस या EXCEPTION जैसे अन्य कोड अंकन वे समझने की उम्मीद नहीं की जानी चाहिए कि देखकर की तुलना में अधिक सहज है।

2

यदि आप स्टैक ट्रेस चाहते हैं, तो RuntimeException के साथ जाएं, यदि System.exit (1) क्लीनर नहीं है।

1

या तो अच्छा है, लेकिन का उपयोग करना पसंद करूंगा क्योंकि RuntimeException को भ्रामक माना जा सकता है।

0

बाहर निकलने को कभी भी मजबूर नहीं करें। अपने रनटाइम विधि को अपने एप्लिकेशन को विधियों से बाहर निकलने और अपने आप को बंद करने की अनुमति देने के तरीके को प्रोग्राम करें। मैं किसी भी संरचनात्मक अनुप्रयोग से पहले एक ग्राफ ड्राइंग का सुझाव देते हैं।

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

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