Генерация исключений с++. 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 то при каких-то ошибках можно не поймать ошибку от другого метода.