工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C - エラー処理

そのため、C プログラミングはエラー処理を直接サポートしていませんが、システム プログラミング言語であるため、戻り値の形式で下位レベルにアクセスできます。ほとんどの C または Unix 関数呼び出しは、エラーが発生した場合に -1 または NULL を返し、エラー コード errno を設定します。 .これはグローバル変数として設定され、関数呼び出し中に発生したエラーを示します。 ヘッダー ファイルで定義されているさまざまなエラー コードを見つけることができます。

したがって、C プログラマーは戻り値をチェックし、戻り値に応じて適切なアクションを実行できます。プログラムの初期化時に errno を 0 に設定することをお勧めします。値 0 は、プログラムにエラーがないことを示します。

errno、perror()。と strerror()

C プログラミング言語は perror() を提供します および strerror() errno に関連付けられたテキスト メッセージを表示するために使用できる関数 .

エラー状態をシミュレートして、存在しないファイルを開こうとしましょう。ここでは使用法を示すために両方の関数を使用していますが、エラーを出力する方法は 1 つまたは複数使用できます。 2 つ目の重要な点は、stderr を使用する必要があることです。 すべてのエラーを出力するためのファイル ストリーム

#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main () {

   FILE * pf;
   int errnum;
   pf = fopen ("unexist.txt", "rb");
	
   if (pf == NULL) {
   
      errnum = errno;
      fprintf(stderr, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   } else {
   
      fclose (pf);
   }
   
   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

エラーをゼロで割る

数値を除算する際に、プログラマーが除数がゼロかどうかをチェックせず、最終的に実行時エラーが発生することはよくある問題です。

以下のコードは、割る前に除数がゼロかどうかをチェックすることでこれを修正します −

ライブデモ
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(-1);
   }
   
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(0);
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

Division by zero! Exiting...

プログラム終了ステータス

操作が成功した後にプログラムが終了する場合、EXIT_SUCCESS の値で終了するのが一般的な方法です。ここで、EXIT_SUCCESS はマクロであり、0 として定義されています。

プログラムにエラー条件があり、終了しようとしている場合は、-1 として定義されているステータス EXIT_FAILURE で終了する必要があります。それでは、上記のプログラムを次のように書きましょう −

ライブデモ
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0) {
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(EXIT_FAILURE);
   }
	
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(EXIT_SUCCESS);
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

Value of quotient : 4

C言語

  1. Cファイルの取り扱い
  2. Java 例外処理
  3. ADCコードのエラー率を理解する
  4. ベルトの保管と取り扱い
  5. C# でのファイル処理:I/O 操作 [例]
  6. 4種類のマテハン機器
  7. C++ シグナル処理
  8. C# - 例外処理
  9. Python-例外処理
  10. マテリアルハンドリングの安全の基本
  11. マテリアル ハンドリングとは?