Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
8-1188395934
Dr. Andrew
2007-08-29 17:58
2008.12.07
Как изменить размер bitmap в памяти?


2-1225186805
dmitry_12_08_73
2008-10-28 12:40
2008.12.07
Скрытие пиктограммы программы в таскбаре


2-1225093757
Иван
2008-10-27 10:49
2008.12.07
Загрузка страницы со скриптами в TWebBrowser


2-1225142982
MsGuns
2008-10-28 00:29
2008.12.07
"Цветные" проблемы


2-1225432186
Uno-84
2008-10-31 08:49
2008.12.07
Как выделить дату в MonthCalendar?