Здравствуйте, Аноним, Вы писали:
А>Чем отличаются [__try/__except от try/catch]
А>Чем предпочтительнее пользоваться при написании Win32API приложений?
Вторым.
Во-первых, SEH — Structured Exception Handling — это и есть Win32 SEH. То, что предусматривает C++, называется просто exception handling.
Обработчики SEH не вызывают деструкторы стековых переменных, это весьма плохо вписывается в идеи C++, поэтому их лучше не использовать, кроме разве что ключа -EHa (в этом случае SEH-исключения преобразовываются в обычные исключения C++).
Здравствуйте, Аноним, Вы писали:
А>Чем предпочтительнее пользоваться при написании Win32API приложений?
Пока тебе не нужна расширенная функциональность SEH, пользуйся C++ exceptions.
SEH можно оставить только для экстремальных платформенно-зависимых вещей.
В качестве альтернативного варианта можно преобразовывать SEH исключения в C++
см. _set_se_translator
Re: C++ SEH или Windows SEH ?
От:
Аноним
Дата:
02.08.07 10:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Чем отличаются
Отличаются тем, что С++ исключения — исключения уровня языка, а SEH — уровня платформы.
А>Чем предпочтительнее пользоваться при написании Win32API приложений?
Это не взаимозаменяемые механизмы. Если ты пишешь на С++, то естественно использовать и С++ исключения. SEH нужен достаточно редко для перехвата системных исключений.
Здравствуйте, Roman Odaisky, Вы писали:
А>>Чем предпочтительнее пользоваться при написании Win32API приложений? RO>Вторым. RO>Во-первых, SEH — Structured Exception Handling — это и есть Win32 SEH. То, что предусматривает C++, называется просто exception handling. RO>Обработчики SEH не вызывают деструкторы стековых переменных, это весьма плохо вписывается в идеи C++, поэтому их лучше не использовать, кроме разве что ключа -EHa (в этом случае SEH-исключения преобразовываются в обычные исключения C++).
Для информации: VC в любом случае при throw вызывает __CxxThrowException
как для try catch так и для __try __except
Т.е. для С++ exception все равно идут через SEH.
Разумеется для других платформ/компиляторов это может быть по другому...
А>Чем предпочтительнее пользоваться при написании Win32API приложений?
SEH предназначены для использования в С а не С++, т.к. при генерации исключения не вызываются деструкторы.
можно использовать осторожно и в ограниченном количестве для ловли специфических системных исключений: