c math lib что происходит при ошибке домена?

#c #c

#c #c

Вопрос:

Согласно документу asin , мне все еще неясно поведение: помимо установленного errno, возникает ли какое-либо исключение, ошибка сегментации или молчание, или это UB, или это определено компилятором / системой / средой выполнения?

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

Ответ №1:

Я бы вообще предпочел cppreference.com более cplusplus.com .

Согласно документации cppreference asin, std::asin не будет генерировать никаких исключений. При ошибке домена он вернет NaN (если поддерживается) или какое-либо другое «значение, определенное реализацией», и установит errno, как вы сказали.

Согласно стандарту C , содержимое <cmath> такое же, как в C (по большей части), поэтому я бы настоятельно предположил, что они также не будут выбрасываться из-за этого.

Если бы он мог генерировать исключение, на странице, на которую я ссылался, был бы раздел под названием «Исключения». Обычно cppreference является стандартной ссылкой де-факто.