cpp: поймать исключение с многоточием и посмотреть информацию


Я знаю, что вы можете поймать "все исключения" и вывести исключение по

try
{
    //some code...
}catch(const std::exception& e) {
   cout << e.what();
}

Но это только для исключений, производных от std:: exception. Мне было интересно, есть ли способ получить некоторую информацию из многоточия catch

try
{
    //some code...
}catch(...) {
   // ??
}

Если механизм такой же, как многоточие для функций, то я должен быть в состоянии сделать что-то вроде приведения аргумента va_list и попытки вызвать метод what().

Я еще не пробовал, но если кто-то знает, как я буду рад узнать, как это сделать.

2 2

2 ответа:

Извините, но вы не можете этого сделать. Доступ к объекту исключения можно получить только в блоке catch для определенного типа исключения.

Из C++11 и далее, вы можете использовать std::current_exception и

std::exception_ptr p;
try {

} catch(...) {
    p = std::current_exception();
}

Затем вы можете "проверить" p, взяв слепки и т. д.

В более ранних стандартах не существует переносимого способа проверки исключения на сайте catch(...).