Exceptions C++ non gérées
Si un gestionnaire correspondant (ou gestionnaire de points de suspension catch
) est introuvable pour l’exception actuelle, la fonction d’exécution prédéfinie terminate
est appelée. (Vous pouvez également appeler terminate
explicitement l’un de vos gestionnaires.) L’action par défaut est d’appeler terminate
abort
. Si vous souhaitez terminate
pour appeler une autre fonction dans votre programme avant de quitter l’application, appelez la fonction set_terminate
avec le nom de la fonction à appeler comme unique argument. Vous pouvez appeler set_terminate
à tout moment dans votre programme. La terminate
routine appelle toujours la dernière fonction donnée en tant qu’argument à set_terminate
.
Exemple
L'exemple suivant lève une exception char *
, mais ne contient pas de gestionnaire désigné pour intercepter des exceptions de type char *
. L'appel à set_terminate
indique à terminate
d'appeler term_func
.
// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
cout << "term_func was called by terminate." << endl;
exit( -1 );
}
int main() {
try
{
set_terminate( term_func );
throw "Out of memory!"; // No catch handler for this exception
}
catch( int )
{
cout << "Integer exception raised." << endl;
}
return 0;
}
Sortie
term_func was called by terminate.
La fonction term_func
doit terminer le programme ou le thread actuel, de préférence en appelant exit
. Si elle ne fait pas cela et revient à la place à son appelant, la fonction abort
est appelée.
Voir aussi
Meilleures pratiques C++ modernes pour la gestion des exceptions et des erreurs
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour