PDA

View Full Version : [C++] Eccezione sconosciuta


the_tube
01-03-2012, 09:19
Ciao a tutti!

Ho preso in mano da poco un programma scritto in C++, che fa uso di diverse librerie. Quello che succede č che ad un certo punto viene lanciata un'eccezione di cui non conosco il tipo, quindi attualmente la catcho solo con "catch(...)".

Usando diverse librerie, ho il sospetto che siano quest'ultime le responsabili di questa eccezione. Di queste librerie possiedo gli header, ma ovviamente qualunque classe puņ essere lanciata come eccezione, anche se non deriva da std::exception.

Catchando con catch(...) non ricavo nessuna info sul problema che ha sollevato l'eccezione. Esiste un modo di conoscere a runtime qual'č il tipo di eccezione che č stato lanciato?

Grazie mille a tutti!
TT.

tomminno
02-03-2012, 09:31
Ma andando in debug non sai da quale metodo si origina l'eccezione?
Hai la documentazione delle librerie che stai usando?

C++11 mette a disposizione la funzione current_exception ma nel tuo caso dipendendo da librerie compilate con versioni precedenti credo che non funzionerebbe, non l'ho ancora mai provato.

the_tube
06-03-2012, 08:21
Grazie Tomminno,

alla fine, andando a caso, ho scoperto che l'eccezione lanciata č di tipo CException*, avendo usato il supporto MFC.

In release l'applicazione occupa quasi 2GB di memoria (lavoro sotto WinXP), in debug li supera ed ovviamente crasha, quindi non riesco a rilevare l'eccezione. Inoltre č un'applicazione scritta in VC6... altro che C++11... :)

Cmq il problema resta. Siccome mi trovo non di rado in queste situazioni, sarebbe utile conoscere il tipo di eccezione lanciata. Io l'ho scoperta per puro caso, catchando istintivamente... sarebbe interessante avere un metodo sistematico. Proverņ sicuramente a dare un'occhiata a current_exception!

Grazie,
TT.