[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)
try {
if (예외 상황) {
throw 변수명
};
};
これは例外を担当する基本CPP提供クラスである.すべての例外処理クラスは、そのクラスを継承して作成されます.したがって,多形成の原理により,どんなエラーが発生しても抽象クラスexceptionクラスが得られる.
Exceptionクラスは、
what()
という仮想メンバー関数を提供し、文字列ポインタを返します.このメンバー関数は仮想関数であるため、必要な文字列を出力するために、例外クラスから派生したクラスで再定義できます.what
関数のパラメータと戻り値は次のとおりです.virtual const char* what() const throw(); //(until C++11)
virtual const char* what() const noexcept; //(since C++11)
Reference
この問題について([CPP Moudle 05] Repetition and Exceptions), 我々は、より多くの情報をここで見つけました https://velog.io/@24siefil/CPP-Moudle-05テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol