例外処理(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は(1、0 )); 24 } 25 他 26である { 27 のprintf(" \ N-!予期しない" ); 28 } 29 30 返す 0 ; 31があります }
例外処理(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 }