Я знаю, что вы можете поймать «все исключения» и распечатать исключение с помощью
try
{
//some code...
}catch(const std::exception& e) {
cout << e.what();
}
но это только для исключений, полученных из std :: exception.
Мне было интересно, если есть способ получить некоторую информацию из улова многоточия
try
{
//some code...
}catch(...) {
// ??
}
Если механизм такой же, как и многоточие для функций, я мог бы сделать что-то вроде приведения аргумента va_list
и пытается позвонить what()
метод.
Я еще не пробовал, но если кто-то знает, как я был бы рад узнать, как.
Извините, вы не можете этого сделать. Вы можете получить доступ только к объекту исключения в catch
блок для определенного типа исключения.
Начиная с C ++ 11 и далее, вы можете использовать std::current_exception
&с:
std::exception_ptr p;
try {
} catch(...) {
p = std::current_exception();
}
Вы можете тогда «осмотреть» p
принимая слепки &с.
В более ранних стандартах не было портативного способа проверки исключения на catch(...)
сайт.