Программирование на C и C++

Онлайн справочник программиста на C и C++

Перехват всех исключений

В определенных обстоятельствах может потребоваться перехватывать все исключения, а не какой- то конкретный тип. Для этого достаточно использовать следующую форму инструкции catch:

catch (...) {
// обработка всех исключений
}

Здесь многоточие соответствует любому типу данных.

Следующая программа иллюстрирует использование catch (...):

// данный пример перехватывает все исключения
#include <iostream.h>
void Xhandler(int test)
{
try{
if(test==0) throw test; // генерация int
if(test==1) throw 'a'; // генерация char
if(test==2) throw 123.23; // генерация double
}
catch (...) { // перехват всех исключений
cout << "Caught One!\n";
}
}
int main()
{
cout << "Start\n";
Xhandler(0);
Xhandler(1);
Xhandler(2);
cout << "End";
return 0;
}

Программа выведет на экран следующий текст:

Start
Caught One!
Caught One!
Caught One!
End

Как можно видеть, три инструкции throw были перехвачены с использованием одной инструкции catch.