Le eccezioni e i codici di stato di uscita sono due cose molto diverse. Le eccezioni sono allo scopo dell'applicazione; i codici di stato di uscita sono nell'ambito del sistema operativo.
Quando un'applicazione chiama un altro, in pratica, l'unico modo standard per determinare se il destinatario ha finito con successo è il codice di stato di uscita. 0
significa successo. Qualsiasi altra cosa significa fallimento. Il fatto che non esiste uno standard per il quale codice è quello che significa che determinare la fonte dell'errore spesso richiede di fare un ulteriore passaggio di consultazione della documentazione, quando disponibile. Data la grande varietà di problemi, la creazione di tale standard sarebbe praticamente impossibile da teorizzare: anche se è possibile standardizzare alcuni errori, come "file non trovato", un codice di uscita, ovvero un numero semplice, non sarà sufficientemente dettagliato : in caso di mancato rilevamento di un file, quale file era esattamente previsto?
Questo difetto è esattamente uguale a quello che ha spinto ad abbandonare i codici di errore entro un programma e usa invece le eccezioni.
Eccezioni:
-
Sono spesso espliciti, in quanto contengono il tipo, il riepilogo e i dati aggiuntivi. Il tipo FileNotFoundException
accoppiato con il percorso del file previsto e la traccia dello stack aiuta a identificare con precisione il problema, sia come utente di un programma che come programmatore, se è colpa del programma non riuscire a trovare il file o non essere in grado di ricorrere a un'altra opzione.
-
Può essere catturato all'interno dell'applicazione stessa.
Quando si tratta di comunicazione tra processi, i servizi Web, ad esempio, consentono di emulare almeno il primo vantaggio delle eccezioni, fornendo la rappresentazione JSON / XML di un errore, piuttosto che un semplice codice di errore.