質問1:C++では、std :: exceptionによってキャッチされない例外をスローすることは可能ですか?
ですがのstd ::例外でキャッチされることはありません例外をスローすることは可能でしょうか?
try
{
}
catch(std::exception & e)
{
}
catch(...)
{
//Is this block needed?
}
質問2:
はそれを持っている方が良いです:
catch(std::exception & e)
それとも
catch(std::exception e)
それとも
catch(const std::exception &e)//<--- this is the method I usually use
"残っているのは第3のオプションです" - 本当に良いオプションではない別のオプションは、ポインタでスローしてキャッチすることです。 – ChrisW
@ChrisW:マイクロソフトがCOMを通じて一般的なオプションを作ったとしても、一般的にはポインタを投げてキャッチすることはお勧めしません。 http://www.parashift.com/c++-faq-lite/exceptions.html#faq-17.6 –
@dribeas - COMは例外を全く異なる方法で実行します。しかし、MSはポインタを投げたりキャッチしたりするためにMFCライブラリを設計しました。これは、最初に実装しようとしたときに、C++コンパイラが例外をサポートしなかったためです。だから、setjmp/longjmpにはマクロがあり、スタックを巻き戻すことはありません...すごくハーフベークしました。 –