Почему обработчик std :: verminate не называется, если исключения отключены?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему обработчик std :: verminate не называется, если исключения отключены?

Сообщение Anonymous »

По умолчанию 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»