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?
java
system.exit
giri
sumber
sumber
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 panggilanexit(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.
sumber
java MyApp && echo success
akan mencetak "berhasil" jika MyApp memiliki kode keluar 0, yaitu jika panggilanexit(0)
atau hanya mencapai akhir metode utama tanpa kesalahan.Zero
=> Semuanya OkePositive
=> 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 eksternalkill -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
sumber
kill -15
) sering menghasilkan kode keluar128+signal
, tetapi (selain dari 9) dapat ditangani dan mengembalikan kode keluar yang berbeda. The-
dalamkill -15
adalah tanda nomor sebagai sinyal dan tidak pid, itu tidak membuat sinyal negatif.System.exit(-1)
dan kemudian di shellecho $?
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.
Baca Lebih Lanjut di Jawa
Pada sistem Unix dan Linux,
0
untuk eksekusi yang sukses dan1
atau lebih tinggi untuk eksekusi yang gagal.sumber
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 .
sumber
exit(0)
umumnya digunakan untuk menunjukkan pemutusan hubungan kerja yang sukses.exit(1)
atauexit(-1)
atau nilai non-nol lainnya menunjukkan penghentian tidak berhasil secara umum.sumber
Inilah jawabannya.
sumber
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
sumber
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
sumber
Ketika orang lain menjawab
0
artinya sukses, sebaliknya.Jika Anda menggunakan file bat (jendela)
System.exit(x)
akan berpengaruh.Kode java (myapp):
}
file bat:
sumber
System.exit (0) oleh konvensi, kode status bukan nol menunjukkan penghentian abnormal.
System.exit (1) -Ini berarti pemutusan tidak berhasil karena beberapa kesalahan
sumber
}
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
sumber