C ++では、例外指定子を使用して、関数が例外をスローする場合とスローしない場合があることを指定できます。例えば:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
次の理由により、実際にそれらを使用することに疑問があります。
- コンパイラーは、厳密には例外指定子を強制しません。そのため、利点は大きくありません。理想的には、コンパイルエラーが発生するようにします。
- 関数が例外指定子に違反している場合、標準的な動作はプログラムを終了することだと思います。
- VS.Netでは、throw(X)をthrow(...)として扱うため、標準への準拠は強くありません。
例外指定子を使用する必要があると思いますか?
「はい」または「いいえ」で答え、答えを正当化するいくつかの理由を提供してください。