Программирование на C и C++

Онлайн справочник программиста на C и C++

_matherr, _matherrl

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.