Bonjour,
Je porte des sources en C et C++ de Netscape NSAPI vers Apache sur AIX 4.3 en utilisant gcc 2.95.3 comme compilateur.
Le module Apache que je génère est lié avec un .so compilé lui aussi avec gcc.
Dans le module, j'éxécute une fonction (admettons maFonction) déclarée dans mon source C (utilisé pour générer le module) de cette manière:
extern "C" int maFonction(char *arg1, char*arg2);
Cette fonction est codée dans un .cpp (utilisé pour générer le .so lié au module) de cette manière:
extern "C" int maFonction(char *arg1, char*arg2)
{
try
{
system("echo 1>>/tmp/result.log" );
MyObject myobject;
system("echo 2>>/tmp/result.log" );
...
}
catch (exception &e)
{
system("echo 6>>/tmp/result.log" );
...
}
catch (...)
{
system("echo 9>>/tmp/result.log" );
...
}
}
Le code C++ de MyObject est situé dans le même .cpp que cette fonction.
Avec gcc, je génère mon .so, puis je génère mon module. Ensuite, je charge le module dans Apache, et j'envoie une requête http.
En consultant le fichier de traces /tmp/result.log, j'obtiens ceci:
1
9
Mon but est d'intercepter l'exception générée par mon constructeur et de l'afficher pour m'aider à comprendre d'où vient le problème.
Je voudrais savoir si il est possible de récupérer un message d'exception à partir d'un bloc "catch (...)", et si oui comment?
Sinon, existe-t-il une classe d'exception mère (comme Throwable en java) qui me permettrait de récupérer le message avec appel à la fonction membre what() en C++?
Peut-être quelqu'un pourrait-il m'indiquer si j'ai fait une erreur grossière qui empêche mon module de fonctionner.
Merci d'avance,
fungus