---小さなノートを扱うC ++の構文例外

例外処理(C言語)

  • 異常は、処理のためのコードで予測可能な問題であり、コードがバグと呼ばれる問題を予測することはできません。

  • もし(){...}他に{...}

  • setjmp関数和のlongjmp

1の#include <stdio.hの>
 2の#include <SETJMP.H>
 3。 
4。のjmp_buf ENV = { 0 };
 5  
。6  int型 divIdは(int型 A、int型のB)
 。7  {
 8      IF(Bの== 0 9      {
 10          longjmpを(ENV、1);    // 2.保存されたコンテキストを復元し、戻り値setjmp関数(第2パラメータ)を設定する
。11      }
 12は     他の
13は     、{
 14          リターン A / B;
 15      }
 16  }
 17 
18であり 、INT ()メイン
 。19  {
 20      IF(setjmp関数(ENV)== 0// 現在のコンテキストセーブ1. 0を返す;
 21                             // 3バックここで、longjmp関数を呼び出した後、戻り値セットlongjmp関数を返します値
22は     、{
 23である          (printf関数"divIdは(1、0)D =%\ N- "、divIdは(10 ));
 24      }
 25      
26である     {
 27          のprintf(" \ N-!予期しない" );
 28      }
 29      
30      返す 0 ; 
 31があります }

 

例外処理(C ++言語)

  • C ++言語レベルの例外処理メカニズムを提供します

  • 例外がスローされ、個別に、より合理的な、柔軟に処理され

  • {...} {...}キャッチしてみてください

  • 任意の型、基本型、クラス型とカスタムタイプのものとすることができることができる例外をスローし、キーワードスロースローを使用します

  • 見つからない場合は例外がスローされた後、それは関数呼び出しの順序に沿って場所を見つけるために追いつくだろう、と、プログラムが終了し、見つかった場合(キャッチするために一致)、処理され、漁獲量を入力し、プログラムが終了しません。

  • 次のようにキャッチを試みることができる複数の接続は、キャッチマッチングルールは次のとおりです。

    • 各例外はキャッチ分岐処理することができ

    • マッチング処理は、トップダウンと一致します

    • 規則マッチングプロセスは、関数呼び出しと同様であるが、無暗黙的型変換、タイトなパラメータマッチング

    • スローされた初期化パラメータが異常をキャッチするために使用されます

    • マッチング基底クラスの例外サブクラス

    • C ++は、カスタム例外を使用することができ、ライブラリで提供の例外を使用する必要はありません。

    • 一般的にキャッチ最後のブランチとして使用する変数のパラメータは、天井の処理を行います

  • プロジェクトは異常な再解釈するのである意味、入れ子にすることができます{...}キャッチ{...}をしようと、互換性のある処理を行います

1つの#include <iostreamの>
 2の#include < ストリング >
 3。 
4。 使用した 名前空間STD;
 5  
。6  ボイド FUNC()       // ネストされ、再パッケージの異常を説明
7。 {
 8。     試し
9。     {
 10          スロー 2 ;
 11      }
 12で     キャッチINT I)
 13は、     {
 14          IF(Iの== 2 15          {
 16              スロー 文字列エラーNO 2" );
 17          }
 18      }
 19  }
 20  
21  のint main()の
 22  {
 23      試みる
24      {
 25           1 ;
 26      }
 27      キャッチINT E)
 28      {
 29          COUT << " キャッチ(int型E) << ENDL。
 30      }
 31      キャッチ(...)
 32      {
 33          COUT << " キャッチ(...)"<< てendl;
34      }
 35      
36      試みる
37      {
 38          )(FUNCと、
39      }
 40      キャッチE)
 41      {
 42          COUT << E << ENDL。
43      }
 44      
45      戻り 0 ; 
46 }

 

おすすめ

転載: www.cnblogs.com/chusiyong/p/11315590.html