Saya ingin tahu perbedaan antara yang berikut di Jawa
System.exit(0);
System.exit(-1);
System.exit(1);
Kapan saya harus menggunakan kode di atas dengan tepat?
Saya ingin tahu perbedaan antara yang berikut di Jawa
System.exit(0);
System.exit(-1);
System.exit(1);
Kapan saya harus menggunakan kode di atas dengan tepat?
Jawaban:
Parameter keluar harus memenuhi syarat jika eksekusi program berjalan baik atau buruk. Ini adalah semacam faktor keturunan dari bahasa pemrograman yang lebih tua di mana berguna untuk mengetahui apakah ada kesalahan dan apa yang salah.
Kode keluar adalah
0
ketika eksekusi berjalan dengan baik;1
, -1
, whatever != 0
Ketika beberapa kesalahan, Anda dapat menggunakan nilai yang berbeda untuk berbagai jenis kesalahan.Jika saya benar kode keluar dulu hanya angka positif (maksud saya di UNIX) dan menurut kisaran:
1-127
adalah kode yang ditentukan pengguna (dihasilkan oleh panggilan exit(n)
)128-255
adalah kode yang dihasilkan oleh terminasi karena sinyal unix yang berbeda seperti SIGSEGV atau SIGTERMTapi saya tidak berpikir Anda harus peduli saat coding di Java, itu hanya sedikit informasi. Ini berguna jika Anda berencana untuk membuat program Anda berinteraksi dengan alat standar.
java MyApp && echo success
akan mencetak "berhasil" jika MyApp memiliki kode keluar 0, yaitu jika panggilan exit(0)
atau hanya mencapai akhir metode utama tanpa kesalahan.
Zero
=> Semuanya Oke
Positive
=> Sesuatu yang saya harapkan berpotensi salah beres (baris perintah buruk, tidak dapat menemukan file, tidak dapat terhubung ke server)
Negative
=> Sesuatu yang saya tidak harapkan sama sekali salah (kesalahan sistem - pengecualian yang tidak terduga - misalnya pemutusan paksa secara eksternal kill -9
)
(nilai yang lebih besar dari 128 sebenarnya negatif, jika Anda menganggapnya sebagai biner bertanda 8-bit, atau pelengkap berpasangan)
Ada banyak kode keluar standar yang baik di sini
kill -15
) sering menghasilkan kode keluar 128+signal
, tetapi (selain dari 9) dapat ditangani dan mengembalikan kode keluar yang berbeda. The -
dalam kill -15
adalah tanda nomor sebagai sinyal dan tidak pid, itu tidak membuat sinyal negatif.
System.exit(-1)
dan kemudian di shell echo $?
Anda, Anda mendapatkan '255'. Inilah sebabnya saya mengatakan angka negatif adalah kesalahan sistem, bukan karena '-' pada parameter kill. Apakah Anda serius berpikir itu yang saya pikirkan? Tetapi terima kasih telah menjelaskan mekanisme yang digunakan Bash untuk menyusun kode-kode ini.
System.exit(system call)
mengakhiri mesin virtual Java yang sedang berjalan dengan memulai urutan penonaktifannya. Argumen berfungsi sebagai kode status .
Dengan konvensi, kode status bukan nol menunjukkan penghentian abnormal.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Baca Lebih Lanjut di Jawa
Pada sistem Unix dan Linux, 0
untuk eksekusi yang sukses dan 1
atau lebih tinggi untuk eksekusi yang gagal.
EXIT_*
tidak ada di Jawa.
Kode status keluar yang tidak nol, biasanya menunjukkan pemutusan yang tidak normal. jika n != 0
, tergantung pada programmer untuk menerapkan makna ke berbagai n's.
Dari https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
exit(0)
umumnya digunakan untuk menunjukkan pemutusan hubungan kerja yang sukses. exit(1)
atau exit(-1)
atau nilai non-nol lainnya menunjukkan penghentian tidak berhasil secara umum.
Inilah jawabannya.
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
Gotcha yang baik adalah kode kesalahan apa pun> 255 akan dikonversi menjadi kode kesalahan% 256. Orang harus berhati-hati tentang hal ini jika mereka menggunakan kode kesalahan khusus> 255 dan mengharapkan kode kesalahan yang tepat dalam logika aplikasi. http://www.tldp.org/LDP/abs/html/exitcodes.html
perbedaan angka yang dimasukkan ke system.exit () dijelaskan dalam jawaban lain. tetapi PERBEDAAN NYATA adalah System.exit () adalah kode yang akan dikembalikan ke proses pemanggilan. Jika program dijalankan oleh sistem Operasi maka kode pengembalian akan memberi tahu OS bahwa jika system.exit () mengembalikan 0 daripada semuanya baik-baik saja tetapi jika tidak ada yang salah, maka mungkin ada beberapa penangan untuk itu dalam proses induk
Ketika orang lain menjawab 0
artinya sukses, sebaliknya.
Jika Anda menggunakan file bat (jendela) System.exit(x)
akan berpengaruh.
Kode java (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
file bat:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
System.exit (0) oleh konvensi, kode status bukan nol menunjukkan penghentian abnormal.
System.exit (1) -Ini berarti pemutusan tidak berhasil karena beberapa kesalahan
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);
}
}
Dalam kode di atas ketika System.exit (0); dan ketika saya menekan case 5 keluar dengan benar tetapi ketika saya menggunakan System.exit (1); dan tekan case 5 keluar dengan kesalahan dan sekali lagi ketika saya mencoba dengan case 15 ia keluar dengan benar ini saya mengetahui bahwa, kapan pun kita memasukkan argumen int dalam yang menentukan, dibutuhkan karakter dari posisi itu yaitu jika saya meletakkan (4) itu berarti mengambil karakter ke-5 dari string itu jika (3) maka itu berarti mengambil karakter ke-4 dari string yang dimasukkan