Como buen programador, uno debe escribir códigos robustos que manejen cada resultado de su programa. Sin embargo, casi todas las funciones de la biblioteca C devolverán 0 o -1 o NULL cuando haya un error.
A veces es obvio que se necesita una comprobación de errores, por ejemplo, cuando intenta abrir un archivo. Pero a menudo ignoro la comprobación de errores en funciones como printf
o incluso malloc
porque no me parece necesario.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
¿Es una buena práctica simplemente ignorar ciertos errores, o hay una mejor manera de manejar todos los errores?
try
declaración, por lo que no tiene que verificar cada llamada u operación. (También tenga en cuenta que algunos idiomas son mejores que otros para detectar errores simples como la anulación de referencia o el índice de matriz fuera de los límites).
errno
! En caso de que no esté familiarizado, si bien es cierto que "casi todas las funciones de la biblioteca C devolverán 0 o -1 o NULL
cuando haya un error", también establecen la errno
variable global , a la que puede acceder mediante el uso #include <errno.h>
y luego simplemente leyendo el valor de errno
. Entonces, por ejemplo, si open
(2) regresa -1
, es posible que desee verificar si errno == EACCES
, lo que indicaría un error de permisos, o ENOENT
, lo que indicaría que el archivo solicitado no existe.
try
/ catch
, aunque podría simularlo con saltos.