Как поймать целочисленное деление на ноль и исключения нарушения доступа в нативном C ++ - PullRequest
6 голосов
/ 07 октября 2011

Мне нужно поймать деление целых чисел на ноль и нарушить доступ к чтению или записи в защищенную память, отобразить мой собственный диалог и сделать что-то подходящее.Эти исключения не могут быть перехвачены механизмом try {} catch {}, так как аппаратные средства генерируют эти исключения.Как я могу ловить там исключения?Любые предложения или ссылки на соответствующие статьи приветствуются mr.abzadeh

Ответы [ 3 ]

8 голосов
/ 07 октября 2011

См. Документацию для механизма __try / __except.Это используется в Windows для перехвата аппаратных исключений.

2 голосов
/ 23 ноября 2011

Существует очень простой способ отловить любое исключение (деление на ноль, нарушение доступа и т. Д.) В Visual Studio с помощью блока try -> catch (...) :)

Достаточно незначительной настройки проекта. Просто включите опцию / EHa в настройках проекта. См. Свойства проекта -> C / C ++ -> Генерация кода -> Установите для параметра Разрешить исключения C ++ значение «Да с исключениями SEH» . Вот и все!

Подробности здесь: http://msdn.microsoft.com/en-us/library/1deeycx5(v=vs.80).aspx

1 голос
/ 07 октября 2011

Странно, что нет возможности отловить эти исключения. но если это так, то, я думаю, вы можете поставить свои собственные проверки и выбросить свои собственные исключения. Но опять же, вы можете что-то упустить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...