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 printf
o anche malloc
perché 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?
try
istruzione, 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 NULL
quando si verifica un errore", impostano anche la errno
variabile 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.