Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try..finally


Страницы:   1 2

Scott Storch ©   (2010-12-08 16:35:00) 

еще один вопрос: нудно ли FindFirst FindClose брать в try..finally?


DVM   (2010-12-08 23:02:00) [21]


> а сами функции не вызывают исключений

да неважно, вызывает или нет, что теперь над каждой функцией гадать? При желании исключение можно схлопотать на любом ровном месте, так не лучше ли сразу брать за правило - захватили ресурс или начали парную операцию, в finally освободили.


soldier   (2010-12-08 23:01:00) [22]

> Ega23 ©   (08.12.10 22:58) [11]

Я этого не утверждал. Внимательнее Олег ;)


Ega23   (2010-12-08 22:58:00) [23]


> Исключений она не вызывает.


Так а кто тебе сказал, что FindFirst, FindNext и FindClose должны исключения вызывать?


soldier   (2010-12-08 22:55:00) [24]

> Rouse_ ©   (08.12.10 21:20) [8]
>
> > но ни одна функция апи их не вызывает
>
> Ни одна? Ну ок, например берем первую часто встречающуюся
> - CloseHandle вызывает или нет?

У меня нет делфей, но судя по

Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Исключений она не вызывает.


Ega23   (2010-12-08 21:23:00) [25]


> Да, но это не ответ на сабж.


Это как раз ответ.


>  а другой код между repeat..until

Юра опечатался, не FileNext, а FindNext, конечно.


Rouse_   (2010-12-08 21:20:00) [26]


> но ни одна функция апи их не вызывает

Ни одна? Ну ок, например берем первую часто встречающуюся - CloseHandle вызывает или нет?


soldier   (2010-12-08 20:58:00) [27]

> Юрий Зотов ©   (08.12.10 18:27) [5]

Да, но это не ответ на сабж. Здесь try..finally защищает не FindFirst, FindNext, а другой код между repeat..until, а сами функции не вызывают исключений (правда проверить не могу, дельфей нет, но ни одна функция апи их не вызывает).


Scott Storch   (2010-12-08 18:29:00) [28]

я так и думал, спасибо. тему можно считать закрытой.


Юрий Зотов   (2010-12-08 18:27:00) [29]

> P   (08.12.10 17:16) [3]

if FindFirst... then
try
 repeat
   ...
 until FileNext...
finally
 FindClose...
end;


Scott Storch   (2010-12-08 17:20:00) [30]


> P


а если внутри begin произойдет ошибка и до FindClose дело не дойдет, handle не освободится ведь, или я не прав.


P   (2010-12-08 17:16:00) [31]


> Scott Storch   (08.12.10 16:35)


Нет не нужно

if FindFirst() <> INVALID_HANDLE_VALUE then
begin
 ...
 FindClose();
end;


Anatoly Podgoretsky   (2010-12-08 16:54:00) [32]

> Scott Storch  (08.12.2010 16:35:00)  [0]

Нудно


Palladin   (2010-12-08 16:46:00) [33]

нудно, а что поделаешь...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо