Вопрос

Если мое приложение выходит из строя, появляется сообщение 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top