Вам нужно использовать ключ компилятора / EHa при сборке приложения, чтобы перехватывать структурированные исключения Windows (например, нарушение прав доступа) с помощью конструкций C ++ try / catch.
В Visual Studio это в свойствах проекта Свойства конфигурации -> C / C ++ -> Генерация кода -> Включить исключения C ++. Вы хотите "Да с исключениями SEH (/ EHa)". Я помню, что настройки чтения имеют некоторые существенные недостатки, хотя я не могу вспомнить, какими они были в точности.
Ссылка: MSDN на C ++, модель обработки исключений
Редактировать: Как предполагает whunmr , прямое использование структурированных исключений, вероятно, лучше, чем / EHa