Q: スタックのアンワインド時に例外をスローしてキャッチするのは安全ですか? それとも、アプリケーションterminate
は 2 回目のスローで呼び出しますか?
最小限の例:
void some_function()
{
try
{
// do stuff here that can throw
throw std::runtime_error("blah");
} catch(const std::exception& re)
{
try // this code could be in some function called from here
{
// do something with re here that throws a logical_error
throw std::logical_error("blah blah"); // does this call terminate?
} catch(const std::logical_error& le)
{
}
}
}
この質問を読んだ後、私は興味を持ちました。
catch(...)
注:デストラクタでできる/すべきであることは知っていますが、ブロックtry/catch
内に aを持つことは一般的に意味がありcatch
ますか - おそらく例外で呼び出されるいくつかの関数(re
私の例では)ですか?