Исключения не обнаруживаются в том случае, если я ожидаю, что они будут обнаружены.Код находится в функции 1 в 1 файле cpp, который скомпилирован в статическую библиотеку GCC 4.2, а затем связан с приложением Какао.Код, о котором идет речь:
class runtime_error : public exception{
// More code
};
int foo( void ){
try {
if( x == 0 ){
throw std::runtime_error( "x is 0" );
}
}
catch( std::exception & e ){
// I expect the exception to be caught here
}
catch( ... ){
// But the exception is caught here
}
}
Я могу изменить код на
int foo( void ){
try {
if( x == 0 ){
throw std::runtime_error( "x is 0" );
}
}
catch( std::runtime_error & e ){
// exception is now caught here
}
catch( … ){
}
}
Вторая версия кода решает проблему только для исключений runtime_error, а не для других классов исключений, которые могутбыть производным от std :: exception.Есть идеи, что не так?Обратите внимание, что первая версия кода отлично работает с Visual Studio.
Спасибо,
Барри