38. C++ Генерация исключений с++. Throw c++

Генерация исключений с++. Throw c++

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

Например:

void func ()
{
int Ex_code;
code1()
{
     // если ошибка
     Ex_code=1;
     throw Ex_code;
}
code2(){ // если ошибка Ex_code=2; throw Ex_code;}
code3(){ // если ошибка Ex_code=3; throw Ex_code;}
}

в main напишем:

try
{
   func();
}
catch (const int Exception_code)
{
   //обработка ошибки
}

Как видно, в блоке catch (const int Exception_code) в качестве параметра использован тип int т.к. ошибку мы возвращаем в типе int (т.к. int Ex_code)

Если не написать обработку try{} catch (…){} и поймать throw, то программа «вылетит».

В throw мы можем передавать что угодно, числа, строки, классы и тд.

Часто используют класс exception(“сбщ…”) а в его конструктор передают сбщ об ошибке, использование базового класса удобнее, т.к. в этом случае мы точно попадем в блок catch (через указатель на базовый класс), а в методе ex.what() будет храниться наше “сбщ…”.

catch (const exception& ex)
{
    //обработка ошибки
    cout<<ex.what()<<endl; //название ошибки
}

Если передавать int или string то при каких-то ошибках можно не поймать ошибку от другого метода.

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

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