C++ で例外を簡単に処理する方法
C++ の例外処理とは、無効な入力の処理、除算演算での数値のゼロ除算など、実行時エラーを検出して効率的に処理するメカニズムを指します。
C++ の例外処理には、try、throw、catch という 3 つのキーワードが必要です。 try ステートメントを使用すると、ユーザーはコード内で例外を発生させる可能性のあるコード ブロックを定義できます。 throw キーワードは、try キーワードの下のブロックをチェックした後に例外が検出された場合に例外をスローします。 catch キーワードには、try ブロックで観察された例外を処理できるコード ブロックが含まれています。
例 1: 除算時の例外処理
このコードは、除算中に例外をチェックするために記述されています。
#include
使用して 名前空間 標準 ;
整数 主要 ( ) {
ダブル 分子、分母、割り算 ;
コート << '分子の値を入力してください:' ;
食べる >> 分子 ;
コート <> 分母 ;
試す {
もし ( 分母 == 0 )
投げる 0 ;
分割 = 分子 / 分母 ;
コート << 分子 << 「/」 << 分母 << 「=」 << 分割 << 終わり ;
}
キャッチ ( 整数 num_例外 ) {
コート << 「エラー! 除数は使用できません。」 << num_例外 << 終わり ;
}
戻る 0 ;
}
このプログラムでは、ユーザーは main() セクションで宣言された分子と分母の値を入力します。 try ブロックでは、if ステートメントを使用して、分母がゼロかどうかの例外をチェックします。分母が 0 であることが判明した場合、ゼロの除数を使用して除算を実行することはできないため、例外がスローされ、catch ブロックはエラー引数を返します。そうでない場合は、単純な除算演算が実行されます。
ユーザーが分子 42 と分母に 0 を入力すると例外がスローされるため、プログラムはエラー引数を返します。
ユーザーは分子 42 を入力し、分母として 2 を入力します。例外が見つからないため、除算後の結果が返されます。
例 2 経過時間を確認するための例外処理
このプログラムは、ユーザーの年齢の例外をチェックします。
#include使用して 名前空間 標準 ;
/*
ここでは、人物の年齢が 18 歳未満の場合に例外 (例外としての年齢) をスローしたいと考えています。
*/
整数 主要 ( )
{
// try ブロックで年齢が 18 歳以上かどうかを確認します。
試す
{
整数 年 ;
コート << 「アクセスするには年齢を入力してください:」 ;
食べる >> 年 ;
もし ( 年 >= 18 )
{
コート << 「アクセスが許可されました。」 ;
}
// 年齢が 18 歳未満の場合、カスタム例外がスローされます。
それ以外
{
投げる ( 年 ) ;
}
}
// スローされた例外をキャッチし、目的の出力を表示します (アクセスが拒否されました!)
キャッチ ( 整数 バツ )
{
コート << 「アクセスが拒否されました。あなたは未成年です。」 << 終わり ;
}
戻る 0 ;
}
このプログラムでは、整数値を持つ変数が定義されています。ユーザーは年齢を入力し、ユーザーの年齢が 18 歳以上であるかどうかのブロック チェックを試すように求められます。これが true でない場合は例外がスローされ、例外ブロックは「アクセスが拒否されました!」を返します。口論。それ以外の場合、アクセスは許可されます。
ユーザーはアクセス許可を確認するために年齢を 12 歳と入力します。この年齢は 18 歳未満であるため、アクセス拒否引数が返されます。
ユーザーは 20 歳を入力します。これは 18 歳以上であるため、ユーザーにアクセスが許可されます。
注記 : プログラム内に catch ブロックがない場合、プログラムは異常に動作し、例外が発生した場合に予期せず終了します。
結論
C++ の例外処理とは、実行時エラーを検出し、それらを効率的に処理するメカニズムを指します。トライする、投げる、キャッチするという 3 つのキーワードが含まれます。 try ブロック内のコードに対して例外がチェックされ、見つかった場合は throw キーワードが例外をスローし、catch ブロックが try ブロックに対してスローされた例外を処理します。例外を処理すると、実行時エラーが回避され、ユーザー エクスペリエンスがスムーズで優れたものになります。