Mondial de la gestion des exceptions en C++
Puis-je mettre en œuvre globale de la gestion des exceptions en C++?
Mon exigence est bloc try...catch n'est pas utilisé dans un morceau de code, puis il devrait y avoir un gestionnaire global d'exception qui se chargera de toutes les uncaught exception.
Puis-je l'obtenir, veuillez nous donner votre précieuse suggestion : )
Il n'y a pas les blocs try...catch en C de toute façon. Envisagez-vous de C++ peut-être?
Merci Karl, j'ai changé en c++.
Ce forum MSDN thread peut fournir quelques liens utiles: social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/...
Avez-vous juste besoin d'attraper les exceptions C++, ou également les erreurs de système, comme des violations d'accès?
Merci Karl, j'ai changé en c++.
Ce forum MSDN thread peut fournir quelques liens utiles: social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/...
Avez-vous juste besoin d'attraper les exceptions C++, ou également les erreurs de système, comme des violations d'accès?
OriginalL'auteur Deviprasad Das | 2010-12-06
Vous devez vous connecter pour publier un commentaire.
En C++ le
terminate
fonction est appelée lorsqu'une exception est interceptée. Vous pouvez installer votre propre gestionnaire de résilier avec laset_terminate
fonction. L'inconvénient est que votre résilier le gestionnaire ne peut jamais revenir; il doit mettre fin à votre programme avec des système d'exploitation primitive. La valeur par défaut est juste pour appelerabort()
OriginalL'auteur doron
J'ai toujours envelopper l'extérieur-plus de fonctions dans un try-catch comme ceci:
Cela va attraper tout. Une bonne gestion des exceptions en C++ n'est pas sur l'écriture de try-catch de tous les cours, mais pour attraper où vous savez comment le gérer (comme vous semblez vouloir le faire). Dans ce cas, la seule chose à faire est d'écrire le message d'erreur vers stderr de sorte que l'utilisateur peut agir sur elle.
Mais ce ne sont pas des exceptions C++. (et l'équivalent des erreurs dans Linux ne sont pas pris par un try/catch)
Eh bien, l'auteur dit qu'il a été à l'aide de C++. Il n'y a aucune mention de la plate-forme spécificités.
Ce n'est pas un gestionnaire global d'exception. Par exemple, cette technique ne fonctionne pas lors de l'utilisation de code C++ à partir d'une autre langue. Donc je ne pense pas qu'il répond à la question.
quand est-ce une exception non interceptée un "bon débit linéaire"? Désolé si j'ai mal compris...
OriginalL'auteur Daniel Lidström
vous pouvez utiliser une combinaison de
set_terminate
etcurrent_exception()
OriginalL'auteur lijie
Lorsqu'une exception est levée, le cas n'est pas pris à ce point, il va haut de la hiérarchie jusqu'à ce qu'il est réellement pris. Si il n'y a pas de code pour gérer l'exception, le programme se termine.
Vous pouvez exécuter de code spécifiques avant la fin de procéder au nettoyage à l'aide de votre propre gestionnaires de
set_unexpected
ouset_terminate
OriginalL'auteur Cratylus