Исключения возникают, когда программа выполняется ненормально из-за условий, не зависящих от программы, таких как нехватка памяти или ошибки ввода-вывода.

Порядок, в котором появляются обработчики catch, важен, потому что обработчики для данного блока try проверяются в порядке их появления.

После того как найден соответствующий обработчик catch, последующие обработчики не проверяются. В результате обработчик catch с многоточием (…) должен быть последним обработчиком для своего блока try.

Синтаксис
try {
// код, который может генерировать исключения
( throw exceptions)
} catch( type1 id1) {
// обрабатывать исключения типа 1
} catch(type2 id2) {
// обрабатывать исключения типа 2
}

Пример:

#include ‹iostream.h›
class Inner {
public:
Inner();
~Inner();
void fun();
};

class Outer {
public:
Outer();
~Outer();
void fun();
};

Inner::Inner()
{
cout ‹‹ «Внутренний конструктор\n»;
}

Inner::~Inner()
{
cout ‹‹ «Внутренний деструктор\n»;
}

void Inner::fun()
{
cout ‹‹ «Внутреннее веселье\n»;
throw 1; //сгенерировать исключение
cout ‹‹ «Эта инструкция не выполнена\n»;
}

Outer::Outer()
{
cout ‹‹ «Внешний конструктор\n»;
}

Outer::~Outer()
{
cout ‹‹ «Внешний деструктор\n»;
}

void Outer::fun()
{
Inner in;
cout ‹‹ «Внешнее веселье\n»;
in.fun();
}

int main()
{
Outer out;
try
{
out.fun();
cout ‹‹ «\nЭта строка также не будет быть выполненным» ‹‹ endl;
}
catch (int i) {
cout ‹‹ «Исключение» ‹‹ i ‹‹ «произошло» ‹‹ endl;
}< br /> catch (…) { // обработчик многоточия, обработка всех типов исключений
cout ‹‹ ”Произошло исключение” ‹‹ endl;
}
return 0;
}

Сгенерированный вывод:
Внешний конструктор
Внутренний конструктор
Внешнее развлечение
Внутреннее развлечение
Внутренний деструктор
Возникло исключение 1
> Внешний деструктор