C++ SEH или Windows SEH ?
От: Аноним  
Дата: 02.08.07 05:50
Оценка:
Чем отличаются

__try 
{
   // guarded code
}
__except ( expression )
{
   // exception handler code
}

от
try 
{
   // guarded code
}
except ( expression )
{
   // exception handler code
}


Чем предпочтительнее пользоваться при написании Win32API приложений?
Re: C++ EH или Windows SEH ?
От: Roman Odaisky Украина  
Дата: 02.08.07 06:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Чем отличаются [__try/__except от try/catch]


А>Чем предпочтительнее пользоваться при написании Win32API приложений?


Вторым.

Во-первых, SEH — Structured Exception Handling — это и есть Win32 SEH. То, что предусматривает C++, называется просто exception handling.

Обработчики SEH не вызывают деструкторы стековых переменных, это весьма плохо вписывается в идеи C++, поэтому их лучше не использовать, кроме разве что ключа -EHa (в этом случае SEH-исключения преобразовываются в обычные исключения C++).
До последнего не верил в пирамиду Лебедева.
Re: C++ SEH или Windows SEH ?
От: remark Россия http://www.1024cores.net/
Дата: 02.08.07 08:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Чем предпочтительнее пользоваться при написании Win32API приложений?


Пока тебе не нужна расширенная функциональность SEH, пользуйся C++ exceptions.
SEH можно оставить только для экстремальных платформенно-зависимых вещей.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: C++ SEH или Windows SEH ?
От: Аноним  
Дата: 02.08.07 09:18
Оценка:
В качестве альтернативного варианта можно преобразовывать SEH исключения в C++
см. _set_se_translator
Re: C++ SEH или Windows SEH ?
От: Аноним  
Дата: 02.08.07 10:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Чем отличаются

Отличаются тем, что С++ исключения — исключения уровня языка, а SEH — уровня платформы.

А>Чем предпочтительнее пользоваться при написании Win32API приложений?

Это не взаимозаменяемые механизмы. Если ты пишешь на С++, то естественно использовать и С++ исключения. SEH нужен достаточно редко для перехвата системных исключений.
Re[2]: C++ EH или Windows SEH ?
От: CreatorCray  
Дата: 02.08.07 11:23
Оценка:
Здравствуйте, 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.
Разумеется для других платформ/компиляторов это может быть по другому...

Подробнее читаем тут
Автор: CreatorCray
Дата: 25.05.06
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: C++ SEH или Windows SEH ?
От: Awaken Украина  
Дата: 03.08.07 19:04
Оценка:
А>Чем предпочтительнее пользоваться при написании Win32API приложений?

SEH предназначены для использования в С а не С++, т.к. при генерации исключения не вызываются деструкторы.
можно использовать осторожно и в ограниченном количестве для ловли специфических системных исключений:

Bottom line: Don't use SEH unless you're in one of the three scenarios above. And even then, think long and hard about it.
http://blogs.msdn.com/larryosterman/archive/2006/10/16/so-when-is-it-ok-to-use-seh.aspx
Re: C++ SEH или Windows SEH ?
От: xure  
Дата: 04.08.07 06:12
Оценка:
А>try
А>{
А> // guarded code
А>}
А>except ( expression )
А>{
А> // exception handler code
А>}
А>[/ccode]
нет существует блока try/except, есть try/catch
Re[2]: C++ SEH или Windows SEH ?
От: Аноним  
Дата: 04.08.07 06:57
Оценка:
Здравствуйте, xure, Вы писали:

А>>try

А>>{
А>> // guarded code
А>>}
А>>except ( expression )
А>>{
А>> // exception handler code
А>>}
А>>[/ccode]
X>нет существует блока try/except, есть try/catch

существует блок _try/_except
Re[3]: C++ SEH или Windows SEH ?
От: rosin  
Дата: 04.08.07 07:01
Оценка: 3 (1)
Здравствуйте, Аноним, Вы писали:
А>существует блок _try/_except
не существует блока _try/_except, существует блок __try/__except
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.