#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 является стандартной ссылкой де-факто.