Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Как обеспечить обязательное испольнение кода...   Найти похожие ветки 

 
Jolik ©   (2005-06-15 16:29) [0]

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

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

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

Спасибо!


 
Fay ©   (2005-06-15 16:32) [1]

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


 
-=XP=- ©   (2005-06-15 16:39) [2]

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

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


 
Jeer ©   (2005-06-15 16:46) [3]

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


 
Anatoly Podgoretsky ©   (2005-06-15 16:50) [4]

try ... except


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

> Jolik ©   (15.06.05 16:29)  

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

try
 Fun1
finally
 try
   Fun2
 finally
   Fun3
 end
end;


 
-=XP=- ©   (2005-06-15 18:32) [6]

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

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


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

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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.091 c
4-1116065833
penguin-ru
2005-05-14 14:17
2005.07.11
Как узнать количество входов активного пользователя?


14-1118385912
syte_ser78
2005-06-10 10:45
2005.07.11
Задачка придуманая мной.


14-1118405259
kaif
2005-06-10 16:07
2005.07.11
Опрос: Имеете ли Вы автомобиль?


3-1117530841
ryds
2005-05-31 13:14
2005.07.11
как программно запустить диалоговое окно IBDatabase Editor?


14-1118602142
Kerk
2005-06-12 22:49
2005.07.11
ЦСКА получит Суперкубок просто так