C Language
Gestione degli errori
Ricerca…
Sintassi
- #include <errno.h>
- int errno; / * implementazione definita * /
- #include <string.h>
- char * strerror (int errnum);
- #include <stdio.h>
- void perror (const char * s);
Osservazioni
Tieni presente che errno
non è necessariamente una variabile ma che la sintassi è solo un'indicazione di come potrebbe essere stata dichiarata. Su molti sistemi moderni con interfacce di thread errno
è una macro che si risolve in un oggetto che è locale al thread corrente.
errno
Quando una funzione di libreria standard fallisce, spesso imposta errno al codice di errore appropriato. Lo standard C richiede almeno 3 valori per errno essere impostato:
Valore | Senso |
---|---|
EDOM | Errore di dominio |
ERANGE | Errore di intervallo |
EILSEQ | Sequenza di caratteri multi-byte non valida |
strerror
Se perror
non è abbastanza flessibile, è possibile ottenere una descrizione di errore leggibile dall'utente chiamando strerror
da <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
Per stampare un messaggio di errore leggibile dall'utente su stderr
, chiamare perror
da <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;
}
Questo stamperà un messaggio di errore relativo al valore corrente di errno
.