Исключения С++ деление на ноль

288
14 марта 2017, 15:51

Дошел до темы исключения в С++. Такой вопрос, как задать исключение деление на 0? Если инструкция не работает

try{ 4/0; } catch(...) { cout << "BAD"; };
Answer 1

Это разные исключения - аппаратные и программные.

Вы можете, например, сделать так:

try
{
    if (c==0) throw std::exception("Деление на 0");
    a = b/c;
} catch(std::exception&e)
{
    cout << e.what();
}

В принципе, в VC++ можно заставить аппаратные исключения генерировать программные исключения C++, но это не рекомендуемый скользкий путь... (См., например, тут).

Answer 2

Деление на 0 в C++ есть undefined behaviour. То есть делить на ноль просто нельзя. Никакого исключения при этом стандарт не обещает (а обещает, наоборот, проблемы).

READ ALSO
Проблема: Ко всем числам второго вектора добавляется последняя цифра из первого вектора

Проблема: Ко всем числам второго вектора добавляется последняя цифра из первого вектора

В общем, мне надо сделать программу с длинной арифметикойПроблема появилась на этапе считывания и переворота массива

278
Проверка графа на цикл

Проверка графа на цикл

Дан ориентированный граф, нужно проверить есть ли в нем циклВершин до 10^5, поэтому дфс с рекурсией не зайдет

310
Черепашка - C++

Черепашка - C++

Что я не правильно делаю в этой задаче? Помогите пожалуйста!

273
Как передать ссылку на this?

Как передать ссылку на this?

Есть класс, для упрощения восприятия я убрал все лишнее

281