Hello, I've got a shared library (gcdk) using libxml2 shared library and a program using gcdk, and the program terminate with the following error: terminate called after throwing an instance of 'std::bad_cast' what(): St8bad_cast Here the schema of the different call happening // libgcdk.so void libxml2_gcdk_error_handler_adapter( void* ctxt , xmlError* error ) { ... throw XmlException(); ... } Document LibXml2DOMParser::parseFile( const char* p_filename ) { ... try { xmlParseDocument( ctxt ); // Parse the xml file // and call the function above in case of // error } catch ( XmlException const& p_excp ) { // This catch block is working well as it catch the XmlException // thrown by the function libxml2_gcdk_error_handler_adapter. throw std::bad_cast(); } } The main program the call the LibXml2DOMParser::parseFile method. The catch block inside this last method catch the XmlException but the catch block inside the main program does not catch the std::bad_cast exception. Do you known what happen ? in the main function, I do something like this: try { parser->parseFile( "test-document.xml" ); } catch ( XmlException const& p_excp ) { std::cerr << p_excp.what(); } catch ( std::exception const& p_excp ) { std::cerr << p_excp.what(); } catch ( ... ) { std::cerr << "Unknown exception.\n"; } none of the catch block above is working ! And no matter the exception throw in the catch block of the parseFile method above ! (the libxml2 library is compiled with the -fexceptions compilation option). g++ 3.4.6 Any hint please ? Thanks a lot.