Текущий архив: 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.46 MB
Время: 0.041 c