Главная страница
    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.46 MB
Время: 0.043 c
1-1118848201
_Anton
2005-06-15 19:10
2005.07.11
Форму AlwaysOnTop


14-1117931066
FVlad
2005-06-05 04:24
2005.07.11
Delphi или Basic


1-1118653916
KeHra
2005-06-13 13:11
2005.07.11
MDI формы


4-1116172367
seregka
2005-05-15 19:52
2005.07.11
Добавление программы в popup меню Windows


14-1118513659
Delphi-beginer
2005-06-11 22:14
2005.07.11
Квадратные уравнения.Помогите новечку.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский