Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
14-1118666992
zioza
2005-06-13 16:49
2005.07.11
Отключить клавиатуру


1-1118831914
Aleksandr.
2005-06-15 14:38
2005.07.11
Как активировать компонент внутри компонента?


14-1118223785
wHammer
2005-06-08 13:43
2005.07.11
Совместимость версий Delphi


1-1118350350
Jakudza
2005-06-10 00:52
2005.07.11
sms server


3-1117513294
Ярослав
2005-05-31 08:21
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский