C Language
Manejo de errores
Buscar..
Sintaxis
- #include <errno.h>
- int errno / * implementación definida * /
- #include <string.h>
- char * strerror (int errnum);
- #include <stdio.h>
- vacío perror (const char * s);
Observaciones
Tenga en cuenta que errno
no es necesariamente una variable, pero que la sintaxis es solo una indicación de cómo podría ser declarada. En muchos sistemas modernos con interfaces de hilo, errno
es una macro que se resuelve en un objeto que es local al hilo actual.
errno
Cuando falla una función de biblioteca estándar, a menudo establece errno en el código de error apropiado. El estándar C requiere que se establezcan al menos 3 valores para errno:
Valor | Sentido |
---|---|
EDOM | Error de dominio |
ERANGE | Error de rango |
EILSEQ | Secuencia de caracteres multi-byte ilegal |
estridente
Si perror
no es lo suficientemente flexible, puede obtener una descripción de error legible por el strerror
llamando a strerror
desde <string.h>
.
int main(int argc, char *argv[])
{
FILE *fout;
int last_error = 0;
if ((fout = fopen(argv[1], "w")) == NULL) {
last_error = errno;
/* reset errno and continue */
errno = 0;
}
/* do some processing and try opening the file differently, then */
if (last_error) {
fprintf(stderr, "fopen: Could not open %s for writing: %s",
argv[1], strerror(last_error));
fputs("Cross fingers and continue", stderr);
}
/* do some other processing */
return EXIT_SUCCESS;
}
perror
Para imprimir un mensaje de error legible por el usuario a stderr
, llame a perror
desde <stdio.h>.
int main(int argc, char *argv[])
{
FILE *fout;
if ((fout = fopen(argv[1], "w")) == NULL) {
perror("fopen: Could not open file for writing");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Esto imprimirá un mensaje de error referente al valor actual de errno
.