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