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