37. C++ Обработка исключений. Блоки try catch

Обработка исключений. Блоки try catch

При выполнении кода могут возникать ошибки, некоторые из них м.б. трудно прогнозируемыми, маловероятными и тд, чтобы программа не вылетала, а выдавала осмысленный результат что произошло и используются блоки обработки исключений (причин почему программа не работает). Для этого используется блок try catch, рассмотрим на примере как он работает:
try
{
code1();
code2();
code3();
}
catch (const std::exception& ex)
{
cout<<ex.what()<<endl;
}
При выполнении кода 1,2,3 в блоке try может возникнуть ошибка (например в коде 2), в этом случае выполнится код 1 и при попытке выполнить код 2 какая-то часть кода 2 «бросит исключение» и мы попадем внутрь блока catch (const std::exception& ex), а код 3 не выполнится.
Внутри блока  catch внутри стандартного/базового класса exception происходит «запоминание» и вызов события, послужившего некорректной работе программы.

Стоит отметить что у классов в C++ можно создавать обработку, эти исключения наследуются от базового класса  exception.

Например для работы с файлами:
1-надо включить обработку исключений:
ifstream file_input;
file_input.exceptions(ifstream::badbit | ifstream::failbit); //включить обработку исключений при работе с файлами.

2-немного переписать блок обработки:
try
{
code1();
code2();
code3();
}
catch (const ifstream::failure& ex)
{
cout<<ex.what()<<endl; //название ошибки
cout<<ex.code ()<<endl; //код ошибки
}

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

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