dlopen en la biblioteca con un miembro estático que arroja una excepción en el constructor - resulta en Abortar

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

Pregunta

Estoy intentando cargar una biblioteca dinámica usando la función dlopen. Esta biblioteca contiene un objeto estático, que arroja una excepción en su constructor. Tengo un '' try-catch (...) '' bloquear alrededor de la llamada dlopen, pero no detecta la excepción, y solo veo "Abortar" impreso.

¿Cómo puedo detectar esta excepción?

¿Fue útil?

Solución

Respuesta corta: no puedes

Pensándolo de nuevo.
Las declaraciones originales son válidas, pero también debe recordar que dlopen () es una función de biblioteca C. C no admite excepciones. Por lo tanto, lanzar una excepción que cruza del código C ++ al código C (su objeto global de nuevo al código dlopen ()) también provocará la finalización de la aplicación.

Ver aquí: ¿Por qué no se llama a destructor en excepción?

Estas son las situaciones en las que lanzar una excepción finalizará la aplicación. Su situación específica está cubierta por:

Una excepción escapa al constructor / destructor de una estática no local (es decir, global)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top