4

スタックの上位で処理されている保留中の例外がない場合、C ++標準は次のコードに対して何が起こるべきであると言っていますか?

try {
  throw;
} catch (...) {
  cerr << "Caught exception." << endl;
}

オブジェクトのないスローはキャッチされますか?

4

1 に答える 1

13

2003 C++ 標準 §15.1[except.throw]/8 から:

現在例外が処理されていない場合は、 オペランドの呼び出しなしでthrow 式terminate()を実行します。

したがって、あなたの例では、現在例外が処理されていないため、何もスローされず、代わりterminate()に呼び出されます。terminate()は戻らないため、あなたのブロックcatchは決して入力されません。

于 2011-04-23T18:19:33.020 に答える