Пишу свой проект в учебных целях для работы с обыкновенными дробями.
#include
using namespace std;
using namespace simple_math;
int main()
{
cout << fraction(1, 2) + fraction(1, 3); // в результате выводит "5 / 6"
return 0;
}
Что если знаменатель какой-то дроби будет равен нулю. Понятно, что нужно выкинуть ошибку, но как это сделать?
if(b == 0)
{
// ОШИБКА!
}
Ответ
Если вы хотите работать по C++'ному, то нужно генерировать исключение. Можно собственного типа, можно наследовать от стандартного exception - это уже вопрос стиля и предпочтений. Примерно так -
class DivideByZero {};
...
if (b == 0) throw DivideByZero();
...
try {
cout << fraction(1, 2) + fraction(1, 3); // в результате выводит "5 / 6"
} catch(DivideByZero&)
{
cerr << "Divide by zero error!
"
}
Или, если воспользоваться стандартным - думаю, тут правильнее invalid_argument - то
if (b == 0) throw invalid_argument("Divide by zero error in fraction!");
...
try {
cout << fraction(1, 2) + fraction(1, 3); // в результате выводит "5 / 6"
} catch(exception&e)
{
cerr << e.what() << endl;
}
Комментариев нет:
Отправить комментарий