Подтвердить что ты не робот

Что такое ошибка домена

в С++, <stdexcept> имеет базовый класс для "ошибок домена", std:: domain_error. я не понимаю, при каких обстоятельствах я должен выбросить ошибку домена в свой код. все остальные базовые классы исключений довольно понятны. я уверен, что std:: domain_error не имеет ничего общего с именами доменов в Интернете, поэтому, пожалуйста, объясните, какой класс ошибки является ошибкой домена и укажите некоторые примеры.

4b9b3361

Ответ 1

Ошибки домена и диапазона используются при работе с математическими функциями.

С одной стороны, область функции - это набор значений, которые могут быть приняты функцией. Например, область корневой квадратной функции является множеством положительных действительных чисел. Поэтому исключение domain_error должно быть выбрано, если аргументы функции не содержатся в его домене

С другой стороны, диапазон функции - это набор значений, возвращаемых функцией. Например, диапазон функции, подобный этой:

f(x) = -x²

- множество отрицательных действительных чисел. Итак, какова точка range_error? Если аргументы функции находятся в ее домене, то результат должен быть в своем диапазоне, поэтому у нас не должно быть ошибок в диапазоне... Однако иногда значение может быть определено, но не может быть представлено. Например, в C функции из <math.h> генерируют ошибки, если возвращаемое значение слишком велико (или слишком мало) по величине для представления

Ответ 2

Ошибка домена относится к проблемам с математическими доменами функций. Функции иногда определяются только для определенных значений. Если вы пытаетесь вызвать такую ​​функцию с аргументом, который не является частью его домена, это ошибка домена.

Например, попытка вызвать sqrt() с отрицательным аргументом является ошибкой домена, так как отрицательные числа не являются частью домена sqrt().

Ответ 3

Это для логических ошибок класса "доменных" ошибок. Это может быть применимо к любой ситуации, когда ввод функции превышает допустимый для нее домен. Это его заявленная цель в стандарте.

Например, у вас есть функция, которая принимает только положительные поплавки, поэтому она выдает domain_error для отрицательных чисел.

Ответ 4

Довольно хорошая форма объяснения cplusplus.com:

Как правило, область математической функции является подмножеством значений, для которых она определена. Например, функция квадратного корня определяется только для неотрицательных чисел. Таким образом, отрицательное число для такой функции будет ошибкой домена.

Ответ 5

Ну, это все руководство, которое вы получаете от стандарта С++:

Класс domain_error определяет тип объектов, выбрасываемых в качестве исключений по реализации для домена отчетов ошибки.

Домен здесь означает "проблемный домен", не имеющий никакого отношения к Интернету. Например, функция квадратного корня может вызывать ошибку домена, если передано отрицательное число.

Ответ 6

Он относится к математическим доменам.

float MySqrRoot(float x)
{
    // sqrt is not valid for negative numbers.
    if (x < 0) throw new domain_error;

    //...
}

Ответ 7

"Подробное описание Выдано библиотекой или вами, сообщать об ошибках домена (домен в математическом смысле). "

От: http://www.aoc.nrao.edu/~tjuerges/ALMA/STL/html/classstd_1_1domain__error.html

в соответствии с этим, его следует использовать, если вам предоставляется ввод, который не соответствует ограничениям, которые вы помещаете в свой интерфейс. Например, функция, которая должна получать положительное значение и получает отрицательный результат.