Текущий архив: 2008.12.07;
Скачать: CL | DM;
Вниз
Обработчики исключений SEH vs classic C++ Найти похожие ветки
← →
Городской Шаман (2008-10-01 19:03) [0]Вопрос в программе на С лучше использовать SEH обработчики
__try
__except
__finally
__leave
Или классические
try
catch
Программа системная и более вероятно что перенос ее на другие платформы не будет.
Что посоветуете?
PS
Это не холивар.
← →
Сергей М. © (2008-10-01 19:27) [1]
> Программа системная
А эт чиво такое - "системная" ?
← →
Городской Шаман (2008-10-01 19:37) [2]
> Сергей М. © (01.10.08 19:27) [1]
>
>
> > Программа системная
>
>
> А эт чиво такое - "системная" ?
Драйвер заглушка для сервиса в пользовательском режиме.
← →
Сергей М. © (2008-10-01 19:40) [3]
> Драйвер заглушка для сервиса
Чем дальше в лес ..
А эт чиво еще такое ?)
← →
Городской Шаман (2008-10-01 19:41) [4]
> Сергей М. © (01.10.08 19:40) [3]
Драйвер фильтр файловой системы, перехватывающий запросы и транслирующий их сервису, который их и обрабатывает.
← →
Игорь Шевченко © (2008-10-01 19:42) [5]
> Вопрос в программе на С лучше использовать SEH обработчики
> __try
> __except
> __finally
> __leave
>
> Или классические
> try
> catch
А в чем разница ?
← →
Сергей М. © (2008-10-01 19:49) [6]
> Драйвер фильтр файловой системы
Ты его строгаешь в билдере или делфи что ли ?)
← →
Городской Шаман (2008-10-01 19:58) [7]
> Игорь Шевченко © (01.10.08 19:42) [5]
Ну через try catch не так удобно эмулировать __try __finally
> Сергей М. © (01.10.08 19:49) [6]
>
> > Драйвер фильтр файловой системы
>
> Ты его строгаешь в билдере или делфи что ли ?)
Драйвер в VS2005(там удобный редактор с автодополнением), компилирую макросом build из WDK(несколько батников для очистки и компиляции драйвера).
А сам сервис пользовательского режима на Delphi.
← →
Игорь Шевченко © (2008-10-01 20:06) [8]
> Ну через try catch не так удобно эмулировать __try __finally
вот тебе и ответ
← →
Городской Шаман (2008-10-01 20:21) [9]
> Игорь Шевченко © (01.10.08 20:06) [8]
>
> > Ну через try catch не так удобно эмулировать __try __finally
>
> вот тебе и ответ
Но вот те же линуксоиды назвали это ламерством - завязываться на платформу. Но драйвер и так же завязан на платформу?
← →
guav © (2008-10-01 20:51) [10]В программе на стандартном С нет никаких исключений.
В программе на стандартном С++ есть только try...catch (и деструкторы как улучшеный finally).
В драйвере прийдётся завязываься на платформу.
← →
KSergey © (2008-10-02 10:41) [11]В плюсах finally не нужно.
Там свои подходы.
← →
Игорь Шевченко © (2008-10-02 14:45) [12]
> Там свои подходы.
catch (...)
← →
KSergey © (2008-10-02 14:47) [13]> Игорь Шевченко © (02.10.08 14:45) [12]
Деструкторы.
← →
Игорь Шевченко © (2008-10-02 16:04) [14]KSergey © (02.10.08 14:47) [13]
> Деструкторы.
Оно конечно хорошо, деструкторы, автоматические вызываемые, и т.п. Но это приводит к необходимости создавать классы для каждого захватываемого ресурса, чтобы по выходе из области видимости этот деструктор отработал. А оно всегда хорошо - плодить лишние сущности ? :)
← →
KSergey © (2008-10-02 16:10) [15]> Игорь Шевченко © (02.10.08 16:04) [14]
> и т.п. Но это приводит к необходимости создавать классы
> для каждого захватываемого ресурса,
> А оно всегда хорошо - плодить лишние сущности ? :)
Что занятно, плюсисты со стажем это делают автоматом идаже не задумываются.
И даже на шарпе (где finally прекрасно есть!) делают классики, только т.к. деструкторы в шарпе вызываются не при выходе из области, а "на досуге" - код оборачивают в using
← →
KSergey © (2008-10-02 16:11) [16]Так что привычка - ох какая штука! Меня тоже долго ломало отсутсвие finally. Ничего, привык обертываться :)
← →
guav © (2008-10-02 19:35) [17]> Но это приводит к необходимости создавать классы для каждого
> захватываемого ресурса, чтобы по выходе из области видимости
> этот деструктор отработал. А оно всегда хорошо - плодить
> лишние сущности ? :)
А локальный класс - это почти не сущность :) или bind в скоп-гарде, т.е. даже без объявлений новых классов.
Хотя мне всегда немного нехватало finally... пока не появился BOOST_SCOPE_EXIT ;)
← →
Городской Шаман (2008-10-02 19:39) [18]
> KSergey © (02.10.08 16:11) [16]
>
> Так что привычка - ох какая штука! Меня тоже долго ломало
> отсутсвие finally. Ничего, привык обертываться :)
Только в драйвере и так нужно думать из какого пула память выделять и на каком IRQL какие функции вызывать. С классами - это будет глюк с классами.
← →
guav © (2008-10-02 19:46) [19]В драйвере С++овским исключениям тоже как бы не место. И если надо ловить SEH - прийдётся использовать __except.
А так, любители плюсов говорят даже успешно использовали STLPort с DDKшным компилятором.
Страницы: 1 вся ветка
Текущий архив: 2008.12.07;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.009 c