Не могу разобраться с try-catch

279
28 мая 2017, 22:24

Добрый вечер. Есть самый простой кусок кода

int k = 0;
            for (double x = -2; x <= 2; x += 0.2)
            {
                try 
                {
                    mas_a[k] = sqrt(pow(x, 2) - 1);
                    k++;
                }
                catch (EDivByZero &e) //ловим деление на 0
                {
                    mas_a[k] = 0;
                    cout << "Деление на ноль целых чисел" << endl;
                    k++;
                }
                catch (EZeroDivide &e)
                {
                    mas_a[k] = 0;
                    cout << "Деление на ноль вещественных чисел" << endl;
                    k++;
                }
                cout << "[" << k << "]=>" << mas_a[k] << " | ";
}

Нужно в диапазоне [-2,2] с шагом 0.2 заполнить массив по функции sqrt(pow(x, 2) - 1). И вылавливать исключения деления на 0. Написал, но ругается на EZeroDivide и EDivByZero. Что не так?

Answer 1

Никаких исключений EDivByZero и EZeroDivide нет. Это С++, а не delphi. Более того, деление на 0 никакого исключения в С++ не производит (для встроенных типов). Это в С++ не то, за что отвечают исключения, а ошибка, за которую должен отвечать программист, чтобы такого не допускать.

Answer 2

Предлагаю использовать в таком случае что-то такое:

#include <iostream>
#include <stdexcept>
using namespace std;
int main(){
   try{
        int i = 0; //для проверки
        if(!i) throw invalid_argument("division by zero");
        else cout<<(double)1/i<<endl;
   }
   catch(invalid_argument& oop){
        cout<<oop.what()<<endl;
   }
   return 0;
}
READ ALSO
Запись в файл строку по указателю byte*

Запись в файл строку по указателю byte*

Доброго времени сутокЕсть следующий пример на c++:

290
Задание элементов массива pi

Задание элементов массива pi

Доброго времени суток, как задать 10 млн чисел после запятой в массиве?

266
Синтаксис for&hellip;in

Синтаксис for…in

Читал учебник в интернете на одном ресурсе и заметил что:

277
Почему не отрабатывает кнопка купить на главной странице магазина?

Почему не отрабатывает кнопка купить на главной странице магазина?

Есть демо интернет-магазин на wordpress+woocommerce (на хостинге поддержка php 56) и его полная итоговая копия

281