Форум: "Основная";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Внизtry... except Найти похожие ветки
← →
Бук (2003-02-03 07:55) [0]Привет, мастера! Вот каой вопрос меня мучает. Часть программного кода у меня заключена в болк
try... except:
try
Код
except
exit;
end;
Насколько правильной будет строчка послеexcept
?
Т. е. выход из процедуры по исключению. Или все же исключения надо обработать?
Спаибо заранее
← →
Юрий Зотов (2003-02-03 08:02) [1]Если нужно - обрабатывайте, если не нужно - не надо.
Выход происходит по НЕОБРАБОТАННОМУ исключению, а в ОБРАБОТАННОМ происходит то, что написано между except и end. В Вашем коде - исключение гасится и происходит нормальный выход.
← →
Бук (2003-02-03 08:05) [2]Ок. Т. е. он корректный?
← →
БИС (2003-02-03 08:16) [3]с точки зрения языка вполне
а с точки зрения понимания реакции программы, тут уж каждый сам должен решить
← →
Бук (2003-02-03 08:18) [4]Ну, мужики, успокоили. Спасибо! :)
← →
icWasya (2003-02-03 09:58) [5]вообще говоря из блока
except
...
end
или из блока
finally
...
end
нельзя делать глобальный переход, т.е. нельзя использовать операторы Exit, а так же Break,GoTo, Continue, если они делают переход к коду вне этого блока.
← →
Smithson (2003-02-03 10:05) [6]Вообще говоря, можно. Это вопрос религиозный и обсуждать его можно с тем же успехом, как и религию.
← →
Danilka (2003-02-03 10:12) [7]А какой смысл в этом exit?
← →
uw (2003-02-03 10:42) [8]>Danilka © (03.02.03 10:12)
После try except end в процедуре вполне мог быть еще код. Другое дело, что его можно было бы вставить в try.
← →
DiamondShark (2003-02-03 11:02) [9]
> icWasya © (03.02.03 09:58)
> нельзя делать глобальный переход
Это вы что-то съели.
← →
БИС (2003-02-03 11:03) [10]если код будет идти после оператора, дающего ошибку, то смысла нету. Лучше уж в finally, но надо быть уверенным, что там тоже ничего такого не возникнет ...
← →
Danilka (2003-02-03 11:07) [11]БИС (03.02.03 11:03)
Исключение не всегда ошибка, или не всегда может рассматриваться как ошибка.
← →
Бук (2003-02-04 06:36) [12]По поводу обработки исключительных ситуаций с exit в except объясняю: Клиент требует MDI приложение. При этом условие у него насчет меню. Хочу, говорит, чтобы все пункты меню были открыты (доступны). Т. е. Enable:=true.
Вот тут и надо обрабатывать исключение. Например, если в меню Edit попытаться вставить текст в не созданное Child окно - возникает исключительная ситуация.
Но такой код вполне работоспособен
procedure TForm1.PasteMenuClick(Sender: TObject)
begin
try
TRichEdit.Paste;
except
exit;
end;
end;
← →
БИС (2003-02-04 08:22) [13]убери exit
и ничего не изменится в данном куске кода
← →
Бук (2003-02-04 08:34) [14]Угу.. Ток окошко с "ошибкой по адресу" будет постоянно вываливаться...
← →
БИС (2003-02-04 08:37) [15]не может быть !
хочешь сказать твой exit отпрыгивает в сторону от
выдачи access violation ?
← →
Chubais (2003-02-04 08:46) [16]
> Например, если в меню Edit попытаться вставить текст в
> не созданное Child окно - возникает исключительная ситуация.
так ведь надо не глушить ошибки, а делать правильно
здеся нада чо: при рзворачивании меню смотреть, применим ли пункт меню к настоящей ситуации или нет.если нет - гасить меню
← →
Бук (2003-02-04 08:55) [17]>БИС
Не поверишь!
> Chubais
Цицирую сам себя:
Клиент требует MDI приложение. При этом условие у него насчет меню. Хочу, говорит, чтобы все пункты меню были открыты (доступны). Т. е. Enable:=true.
← →
БИС (2003-02-04 09:06) [18]пусть открыты будут
ты проверку внутри делай и не копируй зазря
← →
Бук (2003-02-04 09:33) [19]>БИС
Ок...
← →
Chubais (2003-02-04 09:48) [20]
> Бук (04.02.03 08:55)
сорри, невнимательно читаю
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c