優れたプログラマーとして、プログラムのすべての結果を処理する堅牢なコードを作成する必要があります。ただし、エラーが発生すると、Cライブラリのほとんどすべての関数は0、-1、またはNULLを返します。
たとえば、ファイルを開こうとするときなど、エラーチェックが必要であることは明らかです。しかし、私はしばしば、printf
またはmalloc
必要だと感じないからといって、関数のエラーチェックを無視します。
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
特定のエラーを無視するのは良い習慣ですか、それともすべてのエラーを処理するより良い方法がありますか?
try
ステートメントでカバーできるため、すべての呼び出しまたは操作をチェックする必要がありません。(また、一部の言語は、null間接参照や範囲外の配列インデックスなどの単純なエラーの検出に優れていることに注意してください。)
errno
!それは事実だしながら、ケースであなたは、慣れていない「ほとんどCライブラリのすべての関数が返す0または-1またはNULL
エラーがありますとき、」彼らはまた、グローバル設定errno
変数あなたが使用してアクセスすることができ、#include <errno.h>
その後、単に読みをの値errno
。したがって、たとえば、open
(2)が返さ-1
れた場合errno == EACCES
、アクセス許可エラーENOENT
を示すか、要求されたファイルが存在しないことを示すかを確認できます。
try
/をサポートしていませんがcatch
、ジャンプでシミュレートできます。