Come buon programmatore si dovrebbero scrivere codici robusti che gestiranno ogni singolo risultato del suo programma. Tuttavia, quasi tutte le funzioni della libreria C restituiranno 0 o -1 o NULL in caso di errore.
A volte è ovvio che è necessario il controllo degli errori, ad esempio quando si tenta di aprire un file. Ma spesso ignoro il controllo degli errori nelle funzioni come printfo anche mallocperché non mi sento necessario.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
È una buona pratica ignorare solo alcuni errori o esiste un modo migliore per gestire tutti gli errori?
tryistruzione, quindi non è necessario controllare ogni singola chiamata o operazione. (Si noti inoltre che alcune lingue sono migliori di altre nel rilevare errori semplici come la null nullità o l'indice di array fuori limite.)
errno! Nel caso in cui non si abbia familiarità, mentre è vero che "quasi tutte le funzioni della libreria C restituiranno 0 o −1 o NULLquando si verifica un errore", impostano anche la errnovariabile globale , a cui è possibile accedere utilizzando #include <errno.h>e quindi semplicemente leggendo il valore di errno. Quindi, ad esempio, se open(2) ritorna -1, potresti voler verificare se errno == EACCES, che indicherebbe un errore di autorizzazione, o ENOENT, che indicherebbe che il file richiesto non esiste.
try/ catch, anche se potresti simularlo con i salti.