ホームページ >バックエンド開発 >C++ >C++ 関数の例外処理で例外を再スローするにはどうすればよいですか?

C++ 関数の例外処理で例外を再スローするにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-04-15 13:18:011029ブラウズ

C における例外の再スローは、プログラムの他の部分が例外を処理できるように、例外をキャッチした後に再スローするために使用されます。構文は次のとおりです: try { ... } catch (const std::Exception& e) { // 例外を処理します // ... // 例外を再スローします throw;キャッチされた例外は、throw キーワードを使用して catch ブロックで再スローできます。この例外により関数が終了し、上位関数が例外を処理します。

C++ 函数异常处理中如何重抛异常?

C 関数の例外処理での例外の再スロー

C では、例外処理メカニズムにより、プログラムを正常に終了したり再開したりできます。 try-catch ステートメントを使用すると、例外をキャッチし、特定のエラー処理を実行できます。

場合によっては、プログラムの他の部分が例外を処理できるように、例外をキャッチした後に再スローしたい場合があります。これは、throw キーワードを使用して実現できます。

例外を再スローする方法

例外を再スローするための構文は次のとおりです。

try {
  // 可能会抛出异常的代码
}
catch (const std::exception& e) {
  // 处理异常
  // ...
  // 重抛异常
  throw;
}

catch ブロックで、次を使用します。 throw キーワードは、キャッチされた例外を再スローできます。これにより、現在の関数が終了し、上位の関数が例外を処理できるようになります。

実践的なケース

次のコード セグメントを考えてみましょう:

#include <iostream>

void fun1() {
  try {
    fun2();
  }
  catch (const std::logic_error& e) {
    std::cout << "Caught logic error in fun1: " << e.what() << std::endl;
    // 重抛异常以允许调用者处理
    throw;
  }
}

void fun2() {
  throw std::logic_error("Logic error in fun2");
}

int main() {
  try {
    fun1();
  }
  catch (const std::logic_error& e) {
    std::cout << "Caught logic error in main: " << e.what() << std::endl;
  }
  return 0;
}

実行出力:

Caught logic error in fun1: Logic error in fun2
Caught logic error in main: Logic error in fun2

Inこの例では、fun2()std::logic_error 例外をスローします。 fun1() 例外をキャッチして再スローします。 main() その後、関数は再スローされた例外をキャッチして処理します。

以上がC++ 関数の例外処理で例外を再スローするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。