dlopen sulla libreria con un membro statico che genera un'eccezione nel costruttore - risulta in Abort

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

Domanda

Sto cercando di caricare una libreria dinamica usando la funzione dlopen. Questa libreria contiene un oggetto statico, che genera un'eccezione nel suo costruttore. Ho un " try-catch (...) " bloccare attorno alla chiamata non aperta, ma non rileva l'eccezione e vedo solo " Abort " stampata.

Come posso cogliere questa eccezione?

È stato utile?

Soluzione

Risposta breve: impossibile

Ripensandoci.
Le istruzioni originali sono valide, ma devi anche ricordare che dlopen () è una funzione di libreria C. C non supporta le eccezioni. Pertanto, generare un'eccezione che attraversa dal codice C ++ al codice C (il tuo oggetto globale di backup su dlopen ()) causerà anche la chiusura dell'applicazione.

Vedi qui: Perché il distruttore non viene chiamato in eccezione?

Queste sono le situazioni in cui il lancio di un'eccezione termina l'applicazione. La tua situazione specifica è coperta da:

Un'eccezione sfugge al costruttore / distruttore di una statica non locale (cioè globale)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top