После выполнения какого-то нового кода мое приложение на C++ начало вести себя странно (неправильные или неполные обновления экрана, иногда вообще не обновлялись). Через некоторое время мы узнали, что новый код вызывает нарушение прав доступа. Как ни странно, приложение просто продолжает работать (но с некорректными обновлениями экрана).
Сначала мы подумали, что проблема вызвана конструкцией «try-catch(...)» (вставленной сверхактивным бывшим коллегой), но спустя несколько часов (тщательно просматривая стек вызовов, добавляя множество точек останова,... ) мы обнаружили, что если в событии рисования происходит нарушение прав доступа, Windows его перехватывает и просто продолжает выполнять приложение.
- Это нормальное поведение?
- Нормально ли, что Windows перехватывает исключения/ошибки во время события рисования?
- Есть ли способ отключить это? (если нет, это будет означать, что мы должны всегда запускать в отладчике все включенные исключения при тестировании нашего кода).
РЕДАКТИРОВАТЬ:
- В XP происходит правильный сбой (желаемое поведение после нарушения прав доступа)
- В Vista и Windows 7 приложение продолжает работать