![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обеспечить обязательное испольнение кода...
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)