По умолчанию std :: urlinate_handler вызывает std :: abort . std :: verminate вызывается в случае нездорового исключения, или его можно назвать вручную. Я не вижу связи между обработчиком прекращения и исключениями, или почему это требуется. Обработчик прекращения говорит: «Делайте это перед тем, чтобы прервать». Вот вопрос, который я задавал ранее об этом со мной, и вот воспроизводимый пример, который я сделал, который показывает, что обработчик прекращения больше не называется, когда исключения отключены. Отключенные исключения (реализация MSVC) < /p>
Как оказалось, MSVC имеет фиктивную реализацию для функции завершения, когда макрос _has_exceptions не установлен: < /p>
Код: Выделить всё
inline void __CRTDECL terminate() _NOEXCEPT
{ // handle exception termination
}
< /code>
< /blockquote>
Так что это просто так с MSVC, но это все еще в 2025 году? Что std :: verminate
является просто пустой функцией, когда исключения отключены?
Подробнее здесь:
https://stackoverflow.com/questions/795 ... e-disabled