Список инициализатора конструктора C ++ генерирует исключения
У меня проблема со следующим кодом. Как мы видим, я уже обработал исключение, выданное A 'конструктор в C 's конструктор, зачем мне перехватывать и обрабатывать исключение снова в основной функции?
#include
class WException : public std::exception
{
public:
WException( const char* info ) : std::exception(info){}
};
class A
{
public:
A( int a ) : a(a)
{
std::cout < "A's constructor run." < std::endl;
throw WException("A constructor throw exception.");
}
private:
int a;
};
class B
{
public:
B( int b ) : b(b)
{
std::cout < "B's constructor body run." < std::endl;
throw WException("B constructor throw exception");
}
private:
int b;
};
class C : public A, public B
{
public:
C( int a, int b ) try : A(a), B(b)
{
std::cout < "C's constructor run." < std::endl;
}
catch( const WException& e )
{
std::cerr < "In C's constructor" < e.what() < std::endl;
}
};
int main( int argc, char* argv[] )
{
try
{
C c( 10, 100 );
}
catch( const WException& e )
{
std::cerr < "In the main: " < e.what() < std::endl;
}
return 0;
}