Если мое приложение вылетает из строя, появляется "Ошибка выполнения" библиотеки времени выполнения Microsoft Visual C ++! " происходит.

Текст сообщения:
Это приложение необычным образом запросило завершение работы среды выполнения.
Пожалуйста, свяжитесь со службой поддержки приложения для получения дополнительной информации.

Я знаю, что мне нужно решить все эти проблемы, но полагаю, что раньше эта ошибка не возникала. Есть ли в Visual Studio 2005 возможность включить / отключить такую ​​ошибку (обработку) ?. Вместо этого я ожидаю, что приложение просто выйдет из строя / завершится и предложит отчет об ошибках Microsoft Windows.

6
kcode 21 Дек 2009 в 10:39
Я ожидаю, что ваша программа имеет некоторые побочные эффекты, которые теперь недействительны, поскольку компилятор изменяет и запускает сообщения об ошибках.
 – 
Simeon Pilgrim
21 Дек 2009 в 12:13

2 ответа

Лучший ответ

Это сообщение об ошибке появляется, если исключение не обрабатывается и вызывается unexpected(), или если исключение ускользает от деструктора во время раскрутки стека и вызывается terminate(). Оба приводят к вызову abort() и его реализации abort(), отображающей окно сообщения. Такое поведение заложено в VS2k3, VS2k5 и VS2k8. Это действительно раздражает, особенно в приложениях, предназначенных для работы без вмешательства человека (например, ежедневные сборки).

Вы можете обойти это поведение - используйте catch(...), чтобы перехватить все исключения на верхнем уровне, и установите свой собственный обработчик terminate() с помощью set_terminate().

9
sharptooth 21 Дек 2009 в 10:43

Использование:

_set_abort_behavior( 0, _WRITE_ABORT_MSG);
1
aminM 27 Сен 2017 в 14:46