int _matherr (struct exception *err)
int _matherrl (struct _exceptionl *err)
Эта функция не определена стандартом ANSI С.
Функция _matherr() позволяет создавать свои собственные процедуры обработки ошибок. Она должна работать следующим образом. Когда _matherr() может решить проблему, возвращается ненулевое значение, и никакого сообщения не выводится. Встроенная переменная errno также не изменяется. Однако, если функция _matherr() не может решить проблему, она возвращает нуль, выводится соответствующее сообщение об ошибке, и изменяется значение встроенной переменной errno. По умолчанию Borland С++ содержит версию функции _matherr(), которая возвращает нуль.
Функция _matherr() вызывается с аргументом типа exception, который показан ниже:
Элемент type содержит тип происшедшей ошибки. Он может принимать одно из следующих значений:
Символ | Значение |
---|---|
DOMAIN | Ошибка области определения |
SING | Сингулярный, неопределенный результат |
OVERFLOW | Ошибка переполнения |
UNDERFLOW | Ошибка потери значимости |
TLOSS | Общая потеря значащих цифр |
Элемент name содержит указатель на строку, которая содержит название функции, в которой произошла ошибка. Элементы arg1 и arg2 содержат значения аргументов функции, вызвавшей ошибку. Если функция имеет только один аргумент, то он будет содержаться в arg1. Наконец, элемент retval содержит значение функции_matherr(), возвращаемое по умолчанию. Можно вернуть другое значение.
Для функций, работающих с типом long double, следует использовать вариант функции обработки ошибок _matherrl(). Структура exceptionl является той же самой, что и exception, за исключением элементов arg1, arg2 и retval, которые в этом случае имеют тип long double.