Dans le code suivant, à la première itération, j'obtiens une exception, et au second j'obtiens un défaut de segmentation sans message d'erreur imprimé. Il semble que l'exception ne soit pas interceptée:Je reçois un défaut de segmentation au lieu d'une exception
int i = 0;
while(i++ < 10)
{
try {
cout << "Iteration: " << i << endl;
// Code...
cout << "OK" << endl;
}
catch(...)
{
cerr << "Error message" << endl;
continue;
}
}
Output:
Iteration 1
Error message
Iteration 2
Segmentation fault
Est-ce normal, ou est-ce que quelque chose ne va vraiment pas?
Dans le cas où cela devrait être pertinent, dans ce bloc de code, je réinitialise une connexion MySQL, et l'exception est générée lorsque je vérifie si la connexion est fermée.
Merci.
Plate-forme:
Linux - OpenSuse 11,4
C++ - GCC 4.5.1
Intel Xeon
défauts de segmentation sont. Je ne suis pas attrapé par 'try-catch' Vous devriez utiliser un débogueur pour l'attraper à la place –
Je suis à peu près sûr qu'il doit être dans votre' // Code ... '. Vous ne pouvez pas repérer les taches de segfault dans ce que vous avez posté. – kratenko
J'ai réussi à dupliquer votre sortie en écrivant 'if (i == 1) throw 0, sinon i = * (int *) 0;' mais ce n'est pas ce que fait votre '// Code', n'est-ce pas? –