C Language
Fehlerbehandlung
Suche…
Syntax
- #include <errno.h>
- int errno; / * Implementierung definiert * /
- #include <string.h>
- char * strerror (int errnum);
- #include <stdio.h>
- void perror (const Zeichen * s);
Bemerkungen
errno
dass errno
nicht unbedingt eine Variable ist, sondern dass die Syntax nur ein Hinweis darauf ist, wie sie deklariert werden könnte . Auf vielen modernen Systemen mit Thread-Schnittstellen ist errno
ein Makro, das sich in ein Objekt auflöst, das lokal für den aktuellen Thread ist.
errno
Wenn eine Standardbibliotheksfunktion fehlschlägt, wird für errno häufig der entsprechende Fehlercode festgelegt. Der C-Standard erfordert, dass mindestens 3 Werte für das Errno eingestellt werden:
Wert | Bedeutung |
---|---|
EDOM | Domänenfehler |
ERANGE | Bereichsfehler |
EILSEQ | Unzulässige Multi-Byte-Zeichenfolge |
Strerror
Wenn perror
nicht flexibel genug ist, erhalten Sie eine vom Benutzer lesbare Fehlerbeschreibung, indem Sie strerror
von <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
Rufen Sie perror
aus <stdio.h> auf, um eine vom Benutzer lesbare Fehlermeldung an stderr
perror
.
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;
}
Dadurch wird eine Fehlermeldung zum aktuellen Wert von errno
.