По умолчанию std :: urlinate_handler вызывает std :: abort . std :: urlinate вызывается в случае неразрушенного исключения. Или это можно назвать вручную. Если я предоставляю обработчик прекращения, то его называют только в том случае, если исключения включены, но я не понимаю, почему это должно быть так, и в документации нет ничего о том, что он отключен, когда исключения отключены. Я не вижу связи между обработчиком прекращения и исключениями, или почему это требуется. Обработчик прекращения говорит: «Делайте это перед тем, чтобы прервать», я не знаю, почему он отключен за исключением отключений. Вот вопрос, который я задавал ранее об этом со мной, и вот воспроизводимый пример, который я сделал, который показывает, что обработчик прекращения больше не вызывается при отключении исключений. Out, 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