Отключить ошибку среды выполнения Microsoft Visual C ++
-
20-09-2019 - |
Вопрос
Если мое приложение выходит из строя, появляется сообщение Microsoft Visual C ++ Runtime Library "Ошибка времени выполнения!".
Текст сообщения таков:
Это приложение запросило завершение работы среды выполнения необычным способом.
Пожалуйста, свяжитесь со службой поддержки приложения для получения дополнительной информации.
Я знаю, что мне нужно решить все эти проблемы, но я предполагаю, что эта ошибка не появлялась в прошлом.Есть ли в Visual Studio 2005 опция для включения / отключения такой ошибки (обработки)?.Вместо этого я ожидаю, что приложение просто завершит работу и предложит отчет об ошибке Microsoft Windows.
Решение
Это сообщение об ошибке появляется, если исключение не обработано и unexpected()
вызывается, или если исключение ускользает от деструктора во время разматывания стека и terminate()
называется.И то, и другое ведет к abort()
вызываемый и его abort()
реализация, которая показывает окно сообщения.Такое поведение заложено в VS2k3, VS2k5 и VS2k8.Это действительно раздражает, особенно в приложениях, предназначенных для запуска без вмешательства человека (например, при ежедневных сборках).
Вы можете обойти это поведение - используйте catch(...)
перехватывать все исключения на верхнем уровне и устанавливать свои собственные terminate()
обработчик, использующий set_terminate()
.
Другие советы
использование:
_set_abort_behavior( 0, _WRITE_ABORT_MSG);