Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try finally end


Cooller ©   (2007-03-22 11:39:00) 

begin
try
while (xxx) do S1;
S2;
finally
S3;
end;
S4;
end;


Если ли вариант во время выполнения блока S1 перейти сразу к выполнению S3, чтобы потом еще выполнился блок S4?


Аноним   (2007-03-22 11:56:00) [1]

Да, лучше через

> if doS2 then S2;


чем через доп. секцию except, так прозрачнее


ЮЮ   (2007-03-22 11:54:00) [2]

begin
 try
   doS2 := false; //или true, заависит от логики
   while (xxx) do S1; //в блоке можно переопределить doS2
   if doS2 then S2;
 finally
   S3;
 end;
 S4;
end;


Сергей М.   (2007-03-22 11:48:00) [3]


> Cooller   (22.03.07 11:45) [3]
>
> Нужный результат будет достигнут если в S1 произойдет исключение


Не будет он достигнут - S4 выполнен не будет, поскольку при finally исключение не будет "погашено"


Правильный Вася   (2007-03-22 11:46:00) [4]

косовата логика


Cooller   (2007-03-22 11:45:00) [5]

Нужный результат будет достигнут если в S1 произойдет исключение...


Сергей М.   (2007-03-22 11:45:00) [6]

try
while (xxx) do S1; //в блоке S1 возбудить любое исключение
S2;
except
S3;
end;
S4;

Это что ли имелось ввиду ?


clickmaker   (2007-03-22 11:45:00) [7]

а почему бы S4 не забрать в finally?


Cooller   (2007-03-22 11:44:00) [8]

Ну допустим если использовать exit, то из S1 управление перейдет сразу в S3, но S4 выполнен не будет


Сергей М.   (2007-03-22 11:42:00) [9]


> во время выполнения блока S1 перейти сразу к выполнению
> S3


Это как это ?!


Наверх

Титульная страница Поиск, карта сайта Написать письмо