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

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

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. В Вашем коде - исключение гасится и происходит нормальный выход.


Наверх

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