39. C++ Несколько блоков catch.

Несколько блоков catch.

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

try
{
    func();
}
catch (const int Exception_code)
{
    //обработка ошибки 1
}
catch (const char* Exception_code)
{
    //обработка ошибки 2
}
catch (const exception& ex)
{
    //обработка ошибки 3
    cout<<ex.what()<<endl; //название ошибки
}

Как это работает:
когда в блоке try срабатывает ключевое слово throw мы выходим из блока и аналогично конструкции switch case начинаем проверять принимаемые параметры у наших блоков catch.
Если catch с такими аргументами не нашелся, приложение сваливается в ошибку.

Важно: если написать catch с 3 точками, то мы поймаем все что угодно, что вызвало исключение

catch (…)
{
   //обработка ошибки 4….N
}

Мы мы поймаем все оставшиеся исключительные ситуации.
В этом случае мы поймем что произошла исключительная ситуация, но не знаем подробностей, по сути аналог default у блока switch case .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *