Setiap kali program Perl, Python, C ++ atau Tcl berhenti dengan pengecualian yang tidak tertangani, runtimes bahasa tersebut berhati-hati untuk mendaftarkan kode keluar yang tidak nol untuk proses tersebut. Bahkan program berbasis Eclipse mengembalikan 1 jika gagal saat startup. Program yang dijalankan oleh standar java.exe
, bagaimanapun, dengan senang hati mengembalikan nol tidak peduli seberapa cepat mereka berakhir, kecuali program memanggil System.exit()
dengan nilai keluar. Bahkan AssertionFailedError
atau UnsatisfiedLinkError
dilaporkan kembali ke program panggilan saat keluar dengan sukses.
Tentu saja tidak semua sistem memiliki kode pengembalian program, tetapi Unix dan Windows cukup penting untuk menjamin java.lang.Process.exitValue()
proses anak; bukankah mereka juga menjamin konvensi penghormatan untuk proses induk?
Apakah ini cacat dalam desain bahasa atau hanya dalam implementasi? Apakah ada argumen bahwa itu ide yang bagus?