Список инициализатора конструктора 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;
}

Ответы на вопрос(1)

Ваш ответ на вопрос