Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Ага. Почитал MSDN. Там явно указано, что se_translator можно... 13.05.07 08:09 Число просмотров: 3243
Автор: void <Grebnev Valery> Статус: Elderman
|
> Лушче не так. > C++ эксепшены имеют две особенности: > ExceptionRecord->ExceptionCode == 0xe06d7363 > и > ExceptionRecord->ExceptionInformation[0] == 0x19930520 > > Хотя второе необязательно. В обработчике встречал сравнение > с 0x19930521 и 0x19930522, но вживую таких исключений > никогда не видел. С другой стороны, хорошее регресс > тестирование (и правильно расставленные assert-ы) не даст > таким исключениям появиться неожиданно. > > В общем если тебе не по душе /EHa и ты хочешь в > __try-__except-е пропустить C++сные исключения просто делай > в фильтре GetExceptionInformation и сравнивай оба magic > числа или вообще так: > > > __try {
> throw 0;
> } __except (GetExceptionCode() == 0xe06d7363 ?
> EXCEPTION_CONTINUE_SEARCH : EXCEPTION_EXECUTE_HANDLER) {
> // we will never reach here
> } ---
Ты прав. Так лучше. Я добавил в код обработку GetExceptionCode() == 0xe06d7363.
Получилсь компактнее, чище и понятнее. И это главное.
Интересно, что 0xe06d7363 это
"...The code is actually a cryptic mnemonic device, with the initial "E" standing for "exception" and the final 3 bytes (0x6D7363) representing the ASCII values of "msc". ", ;) (http://support.microsoft.com/kb/185294). Как они себя любят, "Emsc" :)
По поводу же "... В обработчике встречал сравнение с 0x19930521 и 0x19930522 ... " - то я пока воздержался добавлять в код.
Похоже это информация о версии комилятора, http://www.openrce.org/articles/full_view/21.
Еще раз спасибо за постепенную ликвидацию моей неграмотности ;)
|
|
|