dlopen sur la bibliothèque avec un membre statique qui lève une exception dans le constructeur - entraîne l'abandon

StackOverflow https://stackoverflow.com/questions/413473

Question

J'essaie de charger une bibliothèque dynamique à l'aide de la fonction dlopen. Cette bibliothèque contient un objet statique qui lève une exception dans son constructeur. J'ai un " try-catch (...) " bloquer l’appel dlopen, mais il ne détecte pas l’exception et je vois juste "Abort". imprimé.

Comment puis-je intercepter cette exception?

Était-ce utile?

La solution

Réponse courte: vous ne pouvez pas

Pensez-y à nouveau.
La déclaration d'origine est valable, mais vous devez également vous rappeler que dlopen () est une fonction de la bibliothèque C. C ne supporte pas les exceptions. Ainsi, le fait de lever une exception passant du code C ++ au code C (votre objet global remontant jusqu'au code dlopen ()) entraînera également l'arrêt de l'application.

Voir ici: Pourquoi destructor n'est pas appelé à l'exception?

Ce sont les situations dans lesquelles le lancement d'une exception mettra fin à l'application. Votre situation spécifique est couverte par:

Une exception échappe au constructeur / destructeur d'un statique non local (ie global)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top