Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Работа с ошибками в С++. Деление на ноль

Пишу свой проект в учебных целях для работы с обыкновенными дробями.
#include #include "simple_math.h"
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; }

Комментариев нет:

Отправить комментарий