Понимание try-блока

Я изучаю C ++ на 2 месяца, и у меня возникли проблемы с пониманием блока try-catch в C ++. Я использую книгу: принципы программирования и практика с использованием C ++, вот что говорится в моей книге:

Основная идея исключений заключается в том, что если функция find является ошибкой, которую она не может обработать, она обычно не возвращается, вместо этого она бросатьs исключение, указывающее, что пошло не так. Любой прямой или косвенный абонент может ловить исключение, то есть указать, что делать, если используется вызываемый код бросать.

Что означает «любой прямой или косвенный абонент средства ? автор имеет в виду вызывающую функцию или функцию catch? «. Я запутался в этом. Не могли бы вы объяснить это мне простым способом?

2

Решение

Пример для косвенного вызова:
Здесь исключение происходит в вызываемой функции. Но try catch помещается в вызывающую функцию, а не в вызываемую функцию.

#include <iostream>
#include <exception>

using namespace std;
void divideByZero(){
int a = 5;

int b = a / 0;
throw(b);
}
int main()
{
try{
divideByZero();
}
catch (exception& e){
cout<<e.what()<<endl;
}

return 0;
}

Пример для прямого исключения:
Здесь исключение происходит непосредственно в самих функциях и обрабатывается там само.

#include <iostream>
using namespace std;

int main()
{
try{
int a = 5;
int b = a / 0;
throw(b);
}
catch (exception& e){
cout<<e.what()<<endl;
}

return 0;
}

Вышеуказанная программа используется только для иллюстрации, а не для какого-либо реального примера, с которым вы, вероятно, столкнетесь, когда будете писать полезную программу.

4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector