Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C で Try-Catch エラー処理をマスターする:実践ガイド

C で Try-Catch エラー処理をマスターする:実践ガイド

「トライ」と「キャッチ」という言葉は、コードまたはデータの問題によりプログラムで例外が発生した場合に何をすべきかを表します。例外はtry で処理されます。 コードのブロック。 Catch ブロックは、try ブロックからの例外を見つけて処理するために利用されます。 Python、C++、JavaScript などの多くのプログラミング言語にはトライキャッチが含まれています。

この記事では、try-catch ステートメントとは何か、および C プログラミングの例を使用してそれがどのように実装されるかを説明します。

Try Catch ステートメントとは何ですか?

試してください ステートメントは、例外を作成する可能性のあるステートメントのコレクションを定義します。特定の種類の例外が発生した場合、catch ブロックに例外が送信されます。コンパイラはエラー通知を出力するか、try/catch ブロックが処理に失敗した場合は例外が処理されるまでコール スタックを上に移動し続けます。

try-catch の一般的な構文 ステートメントは次のように指定されます:

{を試してください
    /*
    エラーを生成する可能性のあるコードを挿入する
    */
}
キャッチ {
    /*
    生成されたエラーを処理するコードを作成します。
    */
}

C の try-catch ステートメントとは何ですか?

C は例外処理をサポートしていません また、そのためのメカニズムが組み込まれていません。ただし、setjmp を使用すると、これをある程度シミュレートできます。 と ロングジャンプ 呼び出します。スタックにアクセスした後にメモリを解放する方法がなければ、例外処理メカニズムは非効率的で安全でなく、C にはガベージ コレクターがありません。 RAM を解放するには、コンテキスト マネージャーも統合する必要があるでしょう。

コードを改善しながら、徐々に解決策を構築していきます。 longjmp と setjmp は、setjmp.h ヘッダー ファイルによって提供できる 2 つの C 関数であり、使用されます。 setjmp 関数は jmp_buf 型変数を受け入れ、直接呼び出すと 0 を返します。同じ jmp_buf 変数を使用して 2 つの変数で longjmp を呼び出すと、setjmp 関数は、longjmp の 2 番目の引数の値と一致する値を返します。

上記の実装の例は次のとおりです。

#include
#include
#define TRY do { jmp_buf buf_state; if ( !setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)
int main()
{
    試してください {
        printf("ステートメントのテストを試してください\n");
        投げてください。
        printf("THROW ブロックがすでに例外をスローしているため、ステートメントは表示されません \n");
    }
    キャッチ {
        printf("例外が発生しました \n");
    }
    エンドトライ;
    0を返します。
}

上記の C プログラムでは、ENDTRY 関数は、do-while ブロックの最後の部分を提供するために使用されます。

C で Try-Catch エラー処理をマスターする:実践ガイド

結論

プログラムの実行中にデータまたはコーディング エラーによる例外が発生した場合は、「試してください」 」 と 「キャッチ」 」で管理方法を説明します。 お試しで コードのブロック、キャッチ中に例外が発生する ブロックは try によるエラーが発生する場所です。 ブロックが検出されて処理されます。多くのプログラミング言語はトライキャッチをサポートしています。 ブロックしますが、C はブロックしません。このガイドでは、C プログラミングで try-catch ステートメントを使用する方法について説明しました。

著者について

C で Try-Catch エラー処理をマスターする:実践ガイド

コマル バツール バツール

私はテクノロジーや新しいアイデアを研究することに情熱を持っており、それが LinuxHint のために執筆するためにここに来ました。私の主な焦点は、プログラミング言語とコンピューター サイエンス関連のトピックについて書くことです。


  1. Cプログラムでバイナリツリーの左端と右端のノードを印刷します。

    左と右の子を持つ二分木が与えられ、タスクは与えられたツリーの正確な右と左の子を印刷することです。 左端のノードは、ツリーの親ノードから左側に関連付けられているノードであり、右端のノードは、ルートの親ノードから右側に関連付けられているノードです。 例 Input: 106 20 320 100 21 61 52 Output: 106 20 320 100 52 アルゴリズム Start Step 1 -> create structure of a node    Declare int data    Declare struct nod

  2. C言語でのシフト演算とは何ですか?

    問題 C言語を使用して、数値の左シフト、右シフト、および補数を表示する簡単なプログラムは何ですか? 解決策 左シフト 変数の値が1回左シフトされると、その値は2倍になります。 たとえば、a =10、次にa <<1 =20 右シフト 変数の値を1回右シフトすると、その値は元の値の半分になります。 1 =5 例 以下はシフト操作のCプログラムです- #include<stdio.h> main (){    int a=9;    printf("Rightshift of a = %d\n",a&