कार्यक्रम के भीतर से जावा ऐप कैसे छोड़ें


145

कोड के साथ जावा एप्लिकेशन को छोड़ने का सबसे अच्छा तरीका क्या है?


1
हम्म। मुझे लगता है कि सवाल बहुत सामान्य हो सकता है। किन परिस्थितियों में छोड़ दिया?
एलन जॉर्ज

3
अपने सभी गैर-डेमन धागे को सामान्य रूप से समाप्त होने दें?
थोरबजोर्न रेवन एंडरसन

जवाबों:


192

आप System.exit()इस उद्देश्य के लिए उपयोग कर सकते हैं ।

Oracle के जावा 8 प्रलेखन के अनुसार:

public static void exit(int status)

वर्तमान में चल रहे जावा वर्चुअल मशीन को समाप्त करता है। तर्क स्थिति कोड के रूप में कार्य करता है; कन्वेंशन द्वारा, एक नॉनज़रो स्टेटस कोड असामान्य समाप्ति को इंगित करता है

इस पद्धति को कक्षा रनटाइम में निकास विधि कहते हैं। यह विधि सामान्य रूप से कभी नहीं लौटती है।

कॉल System.exit(n)प्रभावी रूप से कॉल के बराबर है:

Runtime.getRuntime().exit(n)


102
System.exit(0);

"0" जिसे आपके कार्यक्रम को बुलाया जाता है वह जानता है कि सब कुछ ठीक हो गया। यदि, हालांकि, आप किसी त्रुटि के कारण छोड़ रहे हैं, तो आपको System.exit(1);विशिष्ट त्रुटि के अनुरूप कोई अन्य गैर-शून्य संख्या चाहिए ।

इसके अलावा, जैसा कि दूसरों ने उल्लेख किया है, पहले साफ करें! जिसमें क्लोजिंग फाइल और अन्य खुले संसाधन शामिल हैं।


मुझे लगा कि यह System.exit (1) था?
AFK

14
जैसा कि क्रिस बताता है, System.exit(1)(या कोई अन्य संख्या) यदि आप यह इंगित करना चाहते हैं कि यह त्रुटि के कारण बंद हो गया है। System.exit(0)इंगित करता है कि कार्यक्रम सामान्य रूप से बंद हो गया। आप अपनी पसंद की किसी भी संख्या में 1 को भी बदल सकते हैं, फिर जब आप एक स्क्रिप्ट से अपना एप्लिकेशन चला रहे हों तो आप यह निर्धारित कर सकते हैं कि क्या कोई त्रुटि थी।
स्टॉर्मपोपर

10

System.exit(int i)है इस्तेमाल किया जा रहा है, लेकिन मैं इसे एक अधिक सामान्य अंदर शामिल होंगे shutdown()विधि है, जहां आप और साथ ही "सफाई" कदम, सॉकेट कनेक्शन, फ़ाइल वर्णनकर्ता को बंद करने, को शामिल किया जाएगा तो साथ बाहर निकलने System.exit(x)


6

System.exit() आमतौर पर सबसे अच्छा तरीका नहीं है, लेकिन यह आपके आवेदन पर निर्भर करता है।

किसी एप्लिकेशन को समाप्त करने का सामान्य तरीका main()विधि से बाहर निकलने से है। यह तब काम नहीं करता है जब अन्य गैर-बहरा धागे चल रहे हैं, जैसा कि एक ग्राफिकल यूजर इंटरफेस (AWT, स्विंग आदि) के साथ अनुप्रयोगों के लिए सामान्य है। इन अनुप्रयोगों के लिए, आप या तो GUI इवेंट लूप को समाप्त करने का एक तरीका ढूंढते हैं (पता नहीं है कि क्या AWT या स्विंग के साथ संभव है), या आह्वान करें System.exit()


4

dispose();अपने कार्यक्रमों को बंद करने के लिए उपयोग करना एक बहुत प्रभावी तरीका है।

मैंने पाया कि System.exit(x)बातचीत के फलक का उपयोग करने से आपको लगता है कि आपको कुछ जानकारी की जरूरत है, यह सब गायब हो जाता है।


3

मैं जॉन से सहमत हूं, आपके आवेदन में कुछ प्रतिक्रिया है और System.exit () को कॉल करें।

आश्वस्त रहे कि:

  • आप उपयुक्त निकास मान का उपयोग करते हैं। 0 सामान्य निकास है, कुछ और इंगित करता है कि कोई त्रुटि थी
  • आप सभी इनपुट और आउटपुट स्ट्रीम बंद कर देते हैं। फ़ाइलें, नेटवर्क कनेक्शन, आदि।
  • यदि आप किसी त्रुटि के कारण विशेष रूप से बाहर निकलने का कारण लॉग या प्रिंट करते हैं

2

जवाब System.exit () है, लेकिन इस कार्यक्रम को रद्द करने के लिए एक अच्छी बात नहीं है। कोई भी सफाई, जो आप करना चाहते हैं उसे नष्ट न करें।


1

प्रश्न के दो सरल उत्तर हैं।

यह "पेशेवर तरीका" है:

//This just terminates the program.
System.exit(0);

यह एक अधिक अनाड़ी तरीका है:

//This just terminates the program, just like System.exit(0).
return;

System.exit(0); return;यह भी अच्छा है, रिटर्न सिस्टम से बाहर निकलने से पहले किसी भी रदर कोड को चलाने से रोकता है, अन्यथा आपको एक ध्वज की आवश्यकता होगी (..i.e. if (!called_exit) { further code after exit statement }
ycomp

-1
Runtime.getCurrentRumtime().halt(0);

1
बेहतर: Runtime.getRuntime ()। पड़ाव (0); स्काला के भीतर मेरे लिए पूरी तरह से काम किया!
गेरहार्ड हैगर

@GerhardHagerer लेकिन क्या होगा अगर आपको वर्तमान रनटी नहीं मिलती है, मुझे?
ड्यूड ब्रून

1
के लिए Javadoc से halt: "इस विधि का उपयोग अत्यधिक सावधानी के साथ किया जाना चाहिए। exitविधि के विपरीत , इस विधि से शटडाउन हुक शुरू नहीं होता है और अंतिम-निकासी से बाहर निकलने में सक्षम नहीं होने पर बिन बुलाए फाइनल नहीं होता है। यदि शटडाउन अनुक्रम जारी किया गया है। पहले से ही शुरुआत की जा चुकी है, फिर भी यह तरीका किसी भी शटडाउन हुक या फाइनल का इंतजार नहीं करता है। संक्षेप में, आपको उपयोग करने की आवश्यकता नहीं है halt, आपको पसंद करना चाहिए exit
इरविन बोलविद्ट

-1

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



-3

इसे सही तरीके से करना चाहिए:

mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {

@Override
public void windowClosing(WindowEvent e) {
    if (doQuestion("Really want to exit?")) {
      mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mainFrame.dispose();
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.