2012-04-19 21 views

答えて

2

例外宣言指定子で、基本クラスを宣言してから派生クラスをスローすると、予期しない例外ですか?

いいえ。

リファレンス: C++ 03 15.4例外仕様

パラ6:

例外仕様は、複数回同じタイプを含むことができ、関連しているクラスを含むことができ継承によって、たとえそれが冗長であっても。例外仕様には、クラスstd :: bad_exception(18.6.2.1)も含めることができます。例外仕様が失敗し、ほとんどのコンパイラは、それらを正しく実装していない実験として考えられていること

[Example: 
class X { }; 
class Y { }; 
class Z: public X { }; 
class W { }; 
void f() throw (X, Y) 
{ 
    int n = 0; 
    if (n) throw X(); // OK 
    if (n) throw Z(); // also OK <------- Example of the exact scenario you posted 
    throw W(); // will call unexpected() 
} 
—end example] 

注:

は8
パラの関連する例があります。したがって、それらを使用しないでください(むしろ使用しないでください)。

0

私は、これは恐ろしい非答えですけど、例外仕様を使用しないでください。

http://www.gotw.ca/publications/mill22.htm

関連部分を引用するには:

道徳#1:書き込みはありませんが例外仕様。

モラル#2:おそらく空の場合を除きますが、もし私があなただったら私はそれを避けるでしょう。

#2の警告は、C++ 11では「noexcept」です。

関連する問題