dlopen na Biblioteca com o membro estático que joga a exceção no construtor - resulta em Abort
-
03-07-2019 - |
Pergunta
Estou tentando carregar uma biblioteca dinâmica utilizando a função dlopen. Esta biblioteca contém um objeto estático, o que gera uma exceção em seu construtor. Eu tenho um bloco em torno da chamada dlopen "try-catch (...)", mas não capturar a exceção, e eu só vejo "Abort" impresso.
Como eu sou capaz de pegar essa exceção?
Solução
Resposta curta: Você não pode
pensar nisso novamente.
As declarações originais detém, mas você também deve lembrar que dlopen () é uma função de biblioteca C. C não suportam exceções. Assim lançar uma exceção que passe de código C ++ para C (O seu objeto de volta mundial até) (dlopen) código irá também causa o encerramento do aplicativo.
Veja aqui: Por destrutor não é chamado de exceção
Estas são as situações em que lançar uma exceção irá terminar a aplicação. Sua situação específica é coberto por:
Uma exceção escapa o construtor / destruidor de um estático não local (ou seja global)