Création d'exceptions personnalisées en C ++

Je suis en train d'apprendre le C++, et je suis en train de vivre lorsque j'essaie de créer ma propre exception et de les jeter sur Linux.

J'ai créé un petit projet de test pour tester mon application et ci-dessous est ma classe d'exception fichier d'en-tête.

class TestClass : public std::runtime_error
{
public:
    TestClass(char const* const message) throw();
    virtual char const* what() const throw();
};

Le fichier source de la classe exception est

using namespace std;

TestClass::TestClass(char const* const message) throw()
    : std::runtime_error(message)
{

}

char const * TestClass::what() const throw()
{
    return exception::what();
}

Dans mon application principale, je vais appeler une fonction qui jette mon exception et l'attrape dans un try/catch comme suit:

void runAFunctionAndthrow();

/*
 * 
 */
int main(int argc, char** argv) {
    try
    {
        cout << "About to call function" << endl;
        runAFunctionAndthrow();
    }
    catch (TestClass ex)
    {
        cout << "Exception Caught: " << ex.what() << endl;
    }

    return 0;
}

void runAFunctionAndthrow()
{
    cout << "going to run now. oh dear I need to throw an exception" << endl;

    stringstream logstream;
    logstream << "This is my exception error. :(";
    throw TestClass(logstream.str().c_str());
}

Lorsque je cours, je m'attends à obtenir la sortie suivante:

Sur le point d'appeler la fonction

Va exécuter maintenant. oh j'ai besoin de lancer une exception

Exception Interceptée: C'est mon erreur d'exception. 🙁

Au lieu de ce que je reçois est

Sur le point d'appeler la fonction

va exécuter maintenant. oh j'ai besoin de lancer une exception

Exception Interceptée: std::exception

Avis la dernière ligne il est dit std::exception au lieu de mon message d'exception "Ceci est mon erreur d'exception".

Pourquoi est-ce, cela fonctionne bien sur Windows, mais sous Linux il le fait.

De ce que j'ai vu sur différents postes de ce que j'ai fait est correct donc ce qui me manque.

source d'informationauteur Boardy