Java ile aşağıdakiler arasındaki farkı bilmek istiyorum
System.exit(0);
System.exit(-1);
System.exit(1);
Yukarıdaki kodu ne zaman uygun şekilde kullanmalıyım?
Java ile aşağıdakiler arasındaki farkı bilmek istiyorum
System.exit(0);
System.exit(-1);
System.exit(1);
Yukarıdaki kodu ne zaman uygun şekilde kullanmalıyım?
Yanıtlar:
Programın yürütülmesi iyi veya kötü gittiğinde çıkış parametresi uygun olmalıdır. Bir şeylerin yanlış gittiğini ve neyin yanlış gittiğini bilmek yararlı olduğu eski programlama dillerinden bir çeşit kalıtım.
Çıkış kodu:
0
infaz iyi gittiğinde;1
, -1
, whatever != 0
Bazı hata oluştuğu sırada, hataların farklı tür için farklı değerler kullanabilirsiniz.Ben çıkış kodları sadece pozitif sayılar (UNIX demek istediğim) ve aralığa göre doğru ise:
1-127
kullanıcı tanımlı kodlardır (çağrılarak oluşturulur exit(n)
)128-255
SIGSEGV veya SIGTERM gibi farklı unix sinyalleri nedeniyle sonlandırma ile oluşturulan kodlardırAma Java üzerinde kodlama yaparken önemsemeniz gerektiğini düşünmüyorum, bu sadece biraz bilgi. Programlarınızı standart araçlarla etkileşime sokmayı planlıyorsanız faydalıdır.
java MyApp && echo success
o ararsa BenimUygulamam 0 çıkış kodu, yani sahip IFF "başarı" yazdırır exit(0)
veya sadece hatasız ana yöntemin sonundan ulaşır.
Zero
=> Herşey yolunda
Positive
=> Beklediğim bir şey potansiyel olarak yanlış gidebilir (yanlış komut satırı, dosya bulamıyor, sunucuya bağlanamadı)
Negative
=> Hiç beklemediğim bir şey yanlış gitti (sistem hatası - beklenmedik istisna - harici zorla sonlandırma kill -9
)
(bunları 8 bit imzalı ikili veya ikiye tamamlayıcı olarak görürseniz 128'den büyük değerler gerçekten negatiftir)
Burada bir sürü iyi standart çıkış kodu var
kill -15
) çıkış koduyla sonuçlanır 128+signal
, ancak (9'dan başka) işlenebilir ve farklı bir çıkış kodu döndürür. -
İçinde kill -15
işaretleri bir sinyal ve bir pid olarak sayı, bu sinyal negatif yapmaz olduğunu.
System.exit(-1)
ve sonra kabuğunuzda echo $?
'255' alırsınız. Bu yüzden negatif sayıların kill parametresindeki '-' yüzünden değil sistem hataları olduğunu söyledim. Düşündüğüm şeyin cidden olduğunu düşündün mü? Ancak Bash'in bu kodları oluşturma mekanizmasını açıkladığınız için teşekkür ederiz.
System.exit(system call)
şu anda çalışan Java sanal makinesini kapatma sırasını başlatarak sonlandırır. Argüman bir durum kodu görevi görür .
Kural olarak, sıfır olmayan bir durum kodu anormal sonlandırmayı gösterir.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Java'da Daha Fazla Bilgi
Unix ve Linux sistemlerinde, 0
başarılı yürütmeler için ve 1
daha yüksek başarısız yürütmeler için.
EXIT_*
Java'da mevcut değil.
Sıfır olmayan bir çıkış durum kodu, genellikle anormal sonlandırmayı gösterir. eğer n != 0
, çeşitli n'lere bir anlam uygulamak programcıya kalmış.
Gönderen https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
exit(0)
genellikle başarılı fesih belirtmek için kullanılır. exit(1)
veya exit(-1)
sıfır dışında herhangi bir değer, genel olarak başarısız sonlandırmayı gösterir.
İşte cevap.
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
İyi bir hata kodu,> 255 hata kodunun% 256 hata koduna dönüştürülmesidir.> 255 Özel hata kodu kullanıyorsa ve uygulama mantığında tam hata kodunu beklerseniz, bu konuda özellikle dikkatli olunmalıdır. http://www.tldp.org/LDP/abs/html/exitcodes.html
system.exit () öğesine konan sayıların farkı diğer cevaplarda açıklanmıştır. ancak GERÇEK FARK, System.exit () işlevinin çağırma işlemine döndürülen bir kod olmasıdır. Program İşletim sistemi tarafından çağrılıyorsa, dönüş kodu işletim sistemine sistem.exit () her şeyden 0 döndürürse bir şey yolunda gitmezse, bir şey ters gitmediğinde, ana işlemde bunun için bazı işleyiciler olabileceğini söyler.
Diğerleri 0
anlam başarısına cevap verir gibi , aksi takdirde.
Yarasa dosyası (pencere) kullanırsanız System.exit(x)
etkili olur.
Java kodu (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
yarasa dosyası:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
Sistem.exit (0) kural olarak, sıfır olmayan bir durum kodu anormal sonlandırmayı gösterir.
System.exit (1) -Bazı hata nedeniyle sonlandırmanın başarısız olduğu anlamına gelir
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);
}
}
Yukarıdaki kodda System.exit (0); ve kasa 5'e bastığımda düzgün çıkıyor ancak System.exit (1) kullandığımda; ve basın dava 5 hata ile çıkar ve tekrar dava 15 ile denediğimde bu düzgün çıkar, ben herhangi bir int içine argüman koymak zaman bunu belirtir, o pozisyondan karakteri almak olduğunu biliyorum yani koymak (4) bu karakter dizisinin 5. karakterini almak anlamına gelirse (3)