C++ は、C++ 標準ライブラリの関数が実行されるときに例外をスローするために使用される標準例外処理クラスを提供します。 C++ が提供する標準例外クラスの階層構造は次のとおりです。
すべての例外クラスが例外基本クラスから継承していることがわかります。例外クラスの下の Logic_error と runtime_error は、複数の自己クラスを含む 2 つの比較的大きなカテゴリであり、論理エラーと実行時エラーを表すテーブルに分割されています。
次のような例を挙げてください。
1. new を使用してメモリをオープンするときに、スペースが不十分な場合は、 bad_alloc例外がスローされます。
2.dynamic_cast() を使用して動的型変換を実行し、失敗すると、 bad_typeid例外がスローされます。
3. 計算された値が型で表される最大範囲を超える場合、 overflow_error例外がスローされ、演算のオーバーフローを示します。同様に、underflow_error は演算のアンダーフローを示します。
4. 文字列クラスの添字を使用しているが、それが範囲外になると、 out_of_range例外がスローされます。
待って…待って…詳しくはご自身で調べてください。
C++ に付属の標準例外クラスを使用する場合は、対応するヘッダー ファイルをインクルードする必要があることに注意してください。例外クラスと bad_Exception クラスはヘッダー ファイルの例外で定義され、bad_alloc クラスはヘッダー ファイルの new で定義されるためです。 bad_typeid クラスはヘッダー ファイル typeinfo で定義され、 ios_base::failure クラスはヘッダー ファイル ios で定義され、その他の例外クラスは stdexcel で定義されます。
以下に、 C++ 標準例外クラスの使用方法を示します。
#include<iostream>#include<new>#include<stdExcept>usingnamespacestd;//例外処理 intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<Exceptionoccurred:<<t.what()<<endl;}catch(out_of_range&t){cout<<Exceptionoccurred:<<t.what()<<endl;}戻り値0;}
実行結果は次のとおりです。
ぜひ実際に使ってみて使い方を学んでください!