मैं जावा में निम्नलिखित के बीच अंतर जानना चाहता हूं
System.exit(0);
System.exit(-1);
System.exit(1);
मुझे उपर्युक्त कोड का उचित उपयोग कब करना है?
मैं जावा में निम्नलिखित के बीच अंतर जानना चाहता हूं
System.exit(0);
System.exit(-1);
System.exit(1);
मुझे उपर्युक्त कोड का उचित उपयोग कब करना है?
जवाबों:
यदि प्रोग्राम का निष्पादन अच्छा या बुरा हो गया है, तो निकास के पैरामीटर को योग्य होना चाहिए। यह पुरानी प्रोग्रामिंग भाषाओं से आनुवंशिकता का एक प्रकार है जहां यह जानना उपयोगी है कि क्या कुछ गलत हुआ और क्या गलत हुआ।
एग्जिट कोड है
0
जब निष्पादन ठीक हो गया;1
, -1
, whatever != 0
जब कुछ त्रुटि हुई है, आप विभिन्न मूल्यों त्रुटियों के विभिन्न प्रकार के लिए उपयोग कर सकते हैं।यदि मैं सही एक्ज़िट कोड हूँ, जिसका इस्तेमाल सिर्फ पॉज़िटिव नंबर हुआ करता है (मेरा मतलब UNIX में है) और रेंज के अनुसार:
1-127
उपयोगकर्ता परिभाषित कोड हैं (फोन करके उत्पन्न exit(n)
)128-255
SIGSEGV या SIGTERM जैसे विभिन्न यूनिक्स संकेतों के कारण समाप्ति से उत्पन्न कोड हैंलेकिन मुझे नहीं लगता कि आपको जावा पर कोडिंग करते समय ध्यान रखना चाहिए, यह सिर्फ थोड़ी जानकारी है। यदि आप अपने कार्यक्रमों को मानक टूल के साथ इंटरैक्ट करने की योजना बनाते हैं तो यह उपयोगी है।
java MyApp && echo success
"सफलता" को प्रिंट करेगा यदि IApp का एक्ज़िट कोड 0 है, अर्थात यदि यह कॉल करता है exit(0)
या बिना किसी त्रुटि के मुख्य विधि के अंत तक पहुँचता है।
Zero
=> सब कुछ ठीक है
Positive
=> मुझे कुछ उम्मीद थी कि संभवतः गलत हो सकता है (खराब कमांड-लाइन, फ़ाइल नहीं मिल सकती है, सर्वर से कनेक्ट नहीं हो सकती है)
Negative
=> कुछ ऐसा जिसकी मुझे उम्मीद नहीं थी वह गलत हो गया (सिस्टम त्रुटि - अप्रत्याशित अपवाद - बाहरी रूप से मजबूर समाप्ति जैसे kill -9
)
(128 से अधिक मूल्य वास्तव में नकारात्मक हैं, यदि आप उन्हें 8-बिट हस्ताक्षरित बाइनरी या ट्वोज़ पूरक के रूप में मानते हैं)
यहाँ अच्छे मानक निकास-कोड का भार है
kill -15
) में अक्सर एक्जिट कोड होता है 128+signal
, लेकिन (9 से अलग) को संभाला जा सकता है और एक अलग निकास कोड लौटाएं। -
में kill -15
निशान एक संकेत है न कि पीआईडी के रूप में संख्या है, यह संकेत नकारात्मक नहीं है है।
System.exit(-1)
और तब आपके शेल में echo $?
आपको '255' मिलता है। यही कारण है कि मैंने कहा कि नकारात्मक संख्याएं सिस्टम त्रुटियां हैं, न कि किल पैरामीटर में '-' के कारण। क्या आपने गंभीरता से सोचा कि मैंने क्या सोचा है? लेकिन बाश इन कोड का निर्माण करने वाले तंत्र को समझाने के लिए धन्यवाद।
System.exit(system call)
वर्तमान में चल रहे जावा वर्चुअल मशीन को इसके शटडाउन अनुक्रम की शुरुआत करके समाप्त करता है। तर्क एक स्थिति कोड के रूप में कार्य करता है ।
अधिवेशन के द्वारा, एक गैर-स्थिति स्थिति कोड असामान्य समाप्ति को इंगित करता है।
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
जावा में अधिक पढ़ें
यूनिक्स और लिनक्स सिस्टम पर, 0
सफल निष्पादन के लिए और 1
असफल निष्पादन के लिए उच्चतर।
EXIT_*
जावा में मौजूद नहीं है।
एक गैर-शून्य निकास स्थिति कोड, आमतौर पर असामान्य समाप्ति का संकेत देता है। यदि n != 0
, प्रोग्रामर के लिए इसका अर्थ विभिन्न n के लिए एक अर्थ लागू करना है।
से https://docs.oracle.com/javase/7/docs/api/java/lang/System.html ।
exit(0)
आम तौर पर सफल समाप्ति का संकेत देने के लिए उपयोग किया जाता है। exit(1)
या exit(-1)
या कोई अन्य गैर-शून्य मान सामान्य रूप से असफल समाप्ति दर्शाता है।
यहाँ उत्तर है।
System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message
एक अच्छा गेटा कोई भी त्रुटि कोड है> 255 को त्रुटि कोड% 256 में बदल दिया जाएगा। किसी को विशेष रूप से इस बारे में सावधान रहना चाहिए कि क्या वे कस्टम त्रुटि कोड> 255 का उपयोग कर रहे हैं और एप्लिकेशन लॉजिक में सटीक त्रुटि कोड की अपेक्षा कर रहे हैं। http://www.tldp.org/LDP/abs/html/exitcodes.html
system.exit () में डाले गए नंबरों के अंतर को अन्य उत्तरों में समझाया गया है। लेकिन वास्तविक संदर्भ यह है कि System.exit () एक कोड है जो कि चालान प्रक्रिया में वापस आ जाता है। यदि ऑपरेटिंग सिस्टम द्वारा प्रोग्राम को लागू किया जा रहा है, तो रिटर्न कोड ओएस को बताएगा कि अगर system.exit () 0 सब कुछ की तुलना में ठीक था, लेकिन अगर कुछ गलत नहीं हुआ, तो मूल प्रक्रिया में इसके लिए कुछ हैंडलर हो सकते हैं
जैसा कि अन्य लोग उत्तर का 0
अर्थ है सफलता, अन्यथा।
यदि आप बैट फाइल (विंडो) का उपयोग करते हैं System.exit(x)
तो प्रभाव पड़ेगा।
कोड जावा (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
बैट फाइल:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
System.exit (0) कन्वेंशन द्वारा, एक नॉनज़रो स्टेटस कोड असामान्य समाप्ति दर्शाता है।
System.exit (1) -इसका अर्थ है किसी त्रुटि के कारण समाप्ति असफल
class calc{
public static void main(String args[])
{
int a, b, c;
char ch;
do{
Scanner s=new Scanner(System.in);
System.out.print("1. Addition\n");
System.out.print("2. Substraction\n");
System.out.print("3. Multiplication\n");
System.out.print("4. Division\n");
System.out.print("5. Exit\n\n");
System.out.print("Enter your choice : ");
ch=s.next().charAt(0);
switch (ch)
{
case '1' :
Addition chose1=new Addition();
chose1.add();
break;
case '2' :
Substraction chose2=new Substraction();
chose2.sub();
break;
case '3' :
Multiplication chose3= new Multiplication();
chose3.multi();
break;
case '4' :
Division chose4=new Division();
chose4.divi();
break;
case '5' :
System.exit(0);
break;
default :
System.out.print("wrong choice!!!");
break;
}
System.out.print("\n--------------------------\n");
}while(ch !=5);
}
}
उपरोक्त कोड में जब इसके System.exit (0); और जब मैं केस 5 दबाता हूं तो यह ठीक से बाहर निकल जाता है लेकिन जब मैं System.exit (1) का उपयोग करता हूं; और प्रेस केस 5 यह त्रुटि के साथ बाहर निकलता है और फिर से जब मैं केस 15 के साथ प्रयास करता हूं तो यह ठीक से बाहर निकलता है मुझे पता चला है कि, जब भी हम किसी भी आंतरिक तर्क को निर्दिष्ट करते हैं तो यह निर्दिष्ट करता है कि, यह उस स्थिति से चरित्र को ले जाता है अर्थात यदि मैं डाल देता हूं (४) इसका अर्थ है कि उस तार से ५ वां वर्ण लिया जाए यदि इसका (३) तो इसका अर्थ है कि इनपुट किए गए तार से ४ वां वर्ण लें