В определенных обстоятельствах может потребоваться перехватывать все исключения, а не какой- то конкретный тип. Для этого достаточно использовать следующую форму инструкции 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.