![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
Это как это ?!