C ++の例外


C ++の例外

C ++コードを実行すると、さまざまなエラーが発生する可能性があります。プログラマーによるコーディングエラー、間違った入力によるエラー、またはその他の予期しないことです。

エラーが発生すると、C ++は通常停止し、エラーメッセージを生成します。これの専門用語は次のとおりです。C++は例外をスローします(エラーをスローします)。


C ++で試してキャッチ

C ++での例外処理は、次の3つのキーワードで構成されてtrythrowますcatch

このtryステートメントを使用すると、実行中にエラーをテストするコードのブロックを定義できます。

問題が検出されると、throwキーワードは例外をスローします。これにより、カスタムエラーを作成できます。

このcatchステートメントを使用すると、tryブロックでエラーが発生した場合に、実行するコードのブロックを定義できます。

trycatchキーワードはペアになっています

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

次の例を考えてみましょう。

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

例の説明

ブロックを使用してtryいくつかのコードをテストします。age変数が。未満の場合18throw例外が発生し、catchブロックで処理されます。

ブロック内で、catchエラーをキャッチし、それに対して何かをします。catch ステートメントはパラメーターを取ります。この例では、int変数( )を使用して(ブロック()にmyNumの例外をスローしているため)、の値を出力しますinttryageage

エラーが発生しない場合(たとえば、age20の代わりにある場合15、つまり18より大きい場合)、catchブロックはスキップされます。

int age = 20;

キーワードを使用してthrow、整理のためのカスタムエラー番号/コードなどの参照番号を出力することもできます。

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

あらゆるタイプの例外を処理する(...)

ブロックで使用されているthrow タイプがわからない場合は、tryブロック内で「3つのドット」構文(...)を使用できますcatch。これにより、あらゆるタイプの例外が処理されます。

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}