Главная страница
    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.026 c
3-1117694188
andrey123
2005-06-02 10:36
2005.07.11
Копирование БД


1-1118903800
Yurazz
2005-06-16 10:36
2005.07.11
Как форме TCustomDockForm задать размеры....


3-1117560303
md
2005-05-31 21:25
2005.07.11
как прочитать данные из Query


4-1116431908
George
2005-05-18 19:58
2005.07.11
SolidWorks


1-1118902502
Магнум
2005-06-16 10:15
2005.07.11
TListView and "Array index out of bounds"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский