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

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

Как обеспечить обязательное испольнение кода...


Jolik ©   (2005-06-15 16:29:00) 

такая проблема:
есть последовательный вызов функций
Требуется:
обеспечить обязательное выполнение ВСЕХ функций, вне зависимости от возникающих в других функциях исключений.

Поясню:
Код:
 begin
   Fun1();
   Fun2();
   Fun3();
 end;

Если в Fun1 возникает исключение и оно не обрабатывается в самой функции то Fun2 и Fun3 уже не выполняются.
Что можно сделать? Все функции поотдельности заключать в try ... except? Не очень красиво, если фукций много...
Включать try ... except в каждую функцию? А если функции не мои?

Спасибо!


Жорик   (2005-06-16 09:42:00) [1]

А можно и так :)


procedure Cover(Func: procedure);
begin
 try
   Func();
 except
 end;
end;

begin
 Cover(Fun1);
 Cover(Fun2);
 Cover(Fun3);
end;


Германн   (2005-06-16 02:15:00) [2]

Самый "правильный" ответ на сабж, ну как всегда от Юрия Зотова.
Самый "мимолётный" - дал АП

Но вот хочется уточнить!
Блок try except предназначен не для "обхода" исключения, а для его обработки.  
Его можно использовать для "обхода", но тогда уж придется пенять на себя и только на себя!


-=XP=-   (2005-06-15 18:32:00) [3]

Любителям "красоты" посвящается:

try Fun1() except end;
try Fun2() except end;
try Fun3() except end;
..
try FunN() except end;


Юрий Зотов   (2005-06-15 17:20:00) [4]

> Jolik ©   (15.06.05 16:29)  

Ну, если требуется "обеспечить обязательное выполнение ВСЕХ функций, вне зависимости от возникающих в других функциях исключений", то try... except тут, видимо, не очень подойдет - а вот try...finally будет в самый раз.

try
 Fun1
finally
 try
   Fun2
 finally
   Fun3
 end
end;


Anatoly Podgoretsky   (2005-06-15 16:50:00) [5]

try ... except


Jeer   (2005-06-15 16:46:00) [6]

1. Брось.
2. Не включай.
3. Отключись.


-=XP=-   (2005-06-15 16:39:00) [7]

Все функции поотдельности заключать в try ... except? Не очень красиво, если фукций много...

Каков алгоритм - такова реализация.


Fay   (2005-06-15 16:32:00) [8]

Сделай так, как подсказывает твоё сердце
8)


Наверх

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