[CPP Moudle 05] Repetition and Exceptions

2901 ワード

1.try~catch文


異常の処理は,プログラム実装段階において,異常が発生する可能性のある状況と異常が発生する場合の挙動を予め予測することを意味する.
Cは、条件文(if)によって例外を処理したが、CPPはより直感的な構文を提供する.tryおよびcatch構文は、異常が発生する可能性がある場合をtryコードブロックと定義し、コードブロックに異常が発生した場合の動作catchコードブロックを定義する.
  • try:異常が発生する可能性のあるコードブロック.異常が発生しない場合はtry~catch文がないのと同様、異常が発生した場合は直ちにcatch文にジャンプします.
  • catch:内部定義の例外処理を実行
  • 条件文はプログラムロジックのコードにのみ使用され、例外を処理するときは「予期せぬ状況」とその時の動作に集中し、プログラムレベルで文法を提供し、コードを記述します.

    2.投げ扉

    try使用文は、例外が発生した場合catchを使用して、例外をセクションthrowに転送します.throwは、try文で例外を検索し、throwの変数をcatchに送信します.
    try {
    	if (예외 상황) {
    		throw 변수명
    	};
    };
    すなわち、catchは、throwに投げ出された変数をパラメータとしてcatch内部で定義された異常処理を実行するコードブロックである.このとき、各catch節は、パラメータとして受信した変数のタイプに応じて異なる異常を処理することができる.
    ただし、CPP規格では、throw文の被演算子std::exceptionから派生した例外タイプを使用することを推奨します.このクラスはcppが提供する多くの例外タイプを定義しているからです.

    3. std::exeception::what()


    これは例外を担当する基本CPP提供クラスである.すべての例外処理クラスは、そのクラスを継承して作成されます.したがって,多形成の原理により,どんなエラーが発生しても抽象クラスexceptionクラスが得られる.
    Exceptionクラスは、what()という仮想メンバー関数を提供し、文字列ポインタを返します.このメンバー関数は仮想関数であるため、必要な文字列を出力するために、例外クラスから派生したクラスで再定義できます.what関数のパラメータと戻り値は次のとおりです.
    virtual const char* what() const throw();  //(until C++11)
    virtual const char* what() const noexcept; //(since C++11)
  • 戻り値:Pointer to a null-terminated文字列、解釈情報付き.