Ogni volta che un programma Perl, Python, C ++ o Tcl si interrompe con un'eccezione non gestita, questi runtime linguistici si occupano di registrare un codice di uscita diverso da zero per il processo. Anche i programmi basati su Eclipse restituiscono 1 se falliscono durante l'avvio. I programmi eseguiti dallo standard java.exe
, tuttavia, restituiscono felicemente zero, non importa quanto bruscamente finiscano, a meno che il programma non chiami System.exit()
con un valore di uscita. Anche AssertionFailedError
oUnsatisfiedLinkError
vengono riportati al programma chiamante come uscite riuscite.
Naturalmente non tutti i sistemi hanno codici di ritorno del programma, ma Unix e Windows erano abbastanza importanti da giustificare java.lang.Process.exitValue()
processi secondari; non garantiscono anche il rispetto delle convenzioni per i processi dei genitori?
È un difetto nella progettazione del linguaggio o solo nell'implementazione? C'è un argomento secondo cui è una buona idea?