résilier appelé après avoir jeté une instance de "Poco::SystemException'
Parfois (environ 1 sur 100 pistes), mon programme s'arrête avec ce message:
terminate called after throwing an instance of 'Poco::SystemException'
what(): System exception
mon code n'est pas une capture de l'exception (toutes mes captures sont plus verbeux), et je ne suis pas sûr de l'endroit où il est pris.
il est très probable que l'exception ne contenir un message utile, mais il n'est pas retourné par la ce() la méthode mais par le texte ().
La chaîne "résilier appelé après avoir jeté un exemple de" a ~600k dans Google, donc c'est probablement imprimée par le code inséré par le compilateur ou par certaines communes (bibliothèque pthread?).
J'ai seulement vu ce message d'erreur lorsque le programme est exécuté sur Linux (jamais sur Windows).
quelqu'un sait à quel est le code de cette exception non interceptée est pris?
OriginalL'auteur Omry Yadan | 2009-11-19
Vous devez vous connecter pour publier un commentaire.
Une exception non interceptée est—par définition—n'est pas pris n'importe où.
Si une exception ne peuvent pas être traitées, les exceptions C++, le mécanisme d'appel
std::terminate()
(voir inclure l'en-tête<exception>
), qui feront appel personnalisables gestionnaire de résiliation. Sur votre plate-forme, la norme de la résiliation du gestionnaire d'impression de la sortie destd::exception::what()
(qui Poco exceptions héritent de). Malheureusement, la manière Poco exceptions sont conçus, ce ne sera pas contenir toutes les informations utiles.Il existe de multiples façons une exception ne peuvent pas être traités:
catch()
gestionnaire est trouvé et le déroulement du mécanisme de sortiesmain()
. Vous pouvez essayer d'emballage de votremain()
code danstry...catch
pour imprimer l'exception dudisplayText()
.... functionname(...) throw(...)
). Ceci appellestd::unexpected()
qui appellera à son tourstd::terminate()
(par défaut).Lors de l'utilisation de Poco de threads et d'un thread est terminé par une exception non gérée, Poco va invoquer ses propres
ErrorHandler
et le programme ne sera pas sortie, donc je doute que cela soit un problème thread.s'avère que le bug est DANS Poco ErrorHandler, ou au moins un bug. check this out: pocoproject.org/forum/...
OriginalL'auteur Ferdinand Beyer
J'avais la même erreur. J'ai utilisé un bloc try catch dans la fonction d'exécution de l'Poco::classe Runnable. J'ai enlevé le bloc try catch à partir de cette classe et utilisé un dérivé de Poco::ErrorHandler classe permettant de gérer les erreurs. Après cela, j'ai arrêté l'obtention de cette erreur.
OriginalL'auteur Gaurav Raj