C Language
エラー処理
サーチ…
構文
- #include <errno.h>
- int errno; / *実装定義* /
- #include <string.h>
- char * strerror(int errnum);
- #include <stdio.h>
- void perror(const char * s);
備考
ことを心に持っているerrno
必ずしも変数ではなく、構文は、それが宣言された可能性があるかを示すだけであること。スレッドインタフェースを持つ現代の多くのシステムでは、 errno
は現在のスレッドに対してローカルなオブジェクトに解決するマクロです。
エラー
標準ライブラリ関数が失敗すると、errnoに適切なエラーコードが設定されることがよくあります。 C標準では、errnoを設定するために少なくとも3つの値が必要です。
値 | 意味 |
---|---|
EDOM | ドメインエラー |
ERANGE | レンジエラー |
EILSEQ | 不正なマルチバイト文字シーケンス |
strerror
perror
柔軟性が十分でない場合、 <string.h>
からstrerror
を呼び出すことによって、ユーザーが読めるエラー記述を得ることができます。
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;
}
恐怖
ユーザーが読めるエラーメッセージをstderr
には、<stdio.h>から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;
}
これにより、 errno
現在の値に関するエラーメッセージが出力されerrno
。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow