Za każdym razem, gdy program Perl, Python, C ++ lub Tcl zatrzymuje się z nieobsługiwanym wyjątkiem, środowiska wykonawcze języka starają się zarejestrować niezerowy kod wyjścia dla procesu. Nawet programy oparte na Eclipse zwracają 1, jeśli zawiodą podczas uruchamiania. Programy uruchamiane przez standard java.exeszczęśliwie zwracają zero, bez względu na to, jak gwałtownie się kończą, chyba że program System.exit()wywoła wartość wyjściową. Nawet AssertionFailedErrorlub UnsatisfiedLinkErrorsą zgłaszane do programu wywołującego jako pomyślne wyjścia.
Oczywiście nie wszystkie systemy mają kody powrotu programów, ale Unix i Windows były na tyle ważne, że gwarantowały java.lang.Process.exitValue()procesy potomne; czy nie gwarantują również przestrzegania konwencji dotyczących procesów macierzystych?
Czy to wada w projektowaniu języka, czy tylko we wdrażaniu? Czy istnieje argument, że to dobry pomysł?