Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Внизtry finally end Найти похожие ветки
← →
Cooller (2007-03-22 11:39) [0]
begin
try
while (xxx) do S1;
S2;
finally
S3;
end;
S4;
end;
Если ли вариант во время выполнения блока S1 перейти сразу к выполнению S3, чтобы потом еще выполнился блок S4?
← →
Сергей М. © (2007-03-22 11:42) [1]
> во время выполнения блока S1 перейти сразу к выполнению
> S3
Это как это ?!
← →
Cooller (2007-03-22 11:44) [2]Ну допустим если использовать exit, то из S1 управление перейдет сразу в S3, но S4 выполнен не будет
← →
Cooller (2007-03-22 11:45) [3]Нужный результат будет достигнут если в S1 произойдет исключение...
← →
Сергей М. © (2007-03-22 11:45) [4]try
while (xxx) do S1; //в блоке S1 возбудить любое исключение
S2;
except
S3;
end;
S4;
Это что ли имелось ввиду ?
← →
clickmaker © (2007-03-22 11:45) [5]а почему бы S4 не забрать в finally?
← →
Правильный Вася (2007-03-22 11:46) [6]косовата логика
← →
Сергей М. © (2007-03-22 11:48) [7]
> Cooller (22.03.07 11:45) [3]
>
> Нужный результат будет достигнут если в S1 произойдет исключение
Не будет он достигнут - S4 выполнен не будет, поскольку при finally исключение не будет "погашено"
← →
ЮЮ © (2007-03-22 11:54) [8]
begin
try
doS2 := false; //или true, заависит от логики
while (xxx) do S1; //в блоке можно переопределить doS2
if doS2 then S2;
finally
S3;
end;
S4;
end;
← →
Аноним (2007-03-22 11:56) [9]Да, лучше через
> if doS2 then S2;
чем через доп. секцию except, так прозрачнее
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c