![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Секция except [D4]
Германн © (2009-09-24 01:40:00)А разве нет возможности в секции except указать "набор" исключений?
То бишь:
exceptdo
on XXX, YYY, ZZZ
?
Германн (2009-09-25 16:49:00) [1]
> Leonid Troyanovsky © (25.09.09 16:38) [16]
В принципе согласен.
Leonid Troyanovsky (2009-09-25 16:38:00) [2]
> Германн © (25.09.09 16:00) [15]
> Никакого смысла. Почти никакого.
> Поэтому я и сказал про except end;
Окончание не то.
Обработчик должен брать только то, на что заточен.
Остальное - пропускать.
Ну, а реакцию на EAccessViolation _надо_ оставлять
обработчику самого верхнего уровня
("Мы, все же, облажались: продолжить/завершить приложение?")
Единственное, что можно позволить нижнему уровню,
добавить от себя префикс: мол, здесь был.
--
Regards, LVT.
Германн (2009-09-25 16:00:00) [3]
> Игорь Шевченко © (25.09.09 10:19) [14]
>
>
> > Ладно так и быть. Переделал так:
>
>
> плохо переделал. Какой смысл в этих действиях при EOutOfMemory,
> EAccessViolation ?
>
Никакого смысла. Почти никакого.
Поэтому я и сказал про except end;
А на случай непредвиденных исключений я высылаю клиентам спецверсию с Эврикой.
Игорь Шевченко (2009-09-25 10:19:00) [4]
> Ладно так и быть. Переделал так:
плохо переделал. Какой смысл в этих действиях при EOutOfMemory, EAccessViolation ?
Джо (2009-09-25 07:35:00) [5]
> Германн © (25.09.09 03:23) [12]
> Я просто удивился тому, что секция except имеет много общего
> с секцией case.
> Но она ограничена в возможностях. Но ведь эти секции обрабатывает
> один и тот же компилятор!
Дык, если можно будет указывать on E: X,Y, то потом вызов E.A чего должен делать, если в X есть метод A, а в Y — его нет? :)
Германн (2009-09-25 03:23:00) [6]Я просто удивился тому, что секция except имеет много общего с секцией case.
Но она ограничена в возможностях. Но ведь эти секции обрабатывает один и тот же компилятор!
Германн (2009-09-25 03:16:00) [7]
> Leonid Troyanovsky © (24.09.09 18:46) [5]
>
>
+1
Германн (2009-09-25 02:06:00) [8]
> Игорь Шевченко © (24.09.09 20:56) [6]
Ладно так и быть. Переделал так:
on E : Exception do begin
Image1.Picture.Graphic:=nil;
FMain.SaveLog(E,'','FCliList.DataSource1DataChange');
end;
Хотя и сомневаюсь, что кому-то эта версия потребуется.
:)
Германн (2009-09-25 00:42:00) [9]
> ты представляешь себе, что с тобой черти в аду после этого
> сделают ?
Не так страшен черт, как его малюют!
Омлет (2009-09-24 22:19:00) [10]В except указывай абстрактного предка, который имеет виртуальные методы, реализованные в исключениях-потомках.
Плохиш (2009-09-24 21:41:00) [11]
> Германн © (24.09.09 01:40)
>
> А разве нет возможности в секции except указать "набор"
> исключений?
> То бишь:
> except
> on XXX, YYY, ZZZ do
except
on E:Exception do
if E = XXX then
else if E = YYY then
else if E = ZZZ then
else
MessageBox('Вау, а енто ещё шо за таке???');
end;
:-)
Игорь Шевченко (2009-09-24 20:56:00) [12]
> Лучше наверно будет поставить except end;
ты представляешь себе, что с тобой черти в аду после этого сделают ?
Leonid Troyanovsky (2009-09-24 18:46:00) [13]
> Германн © (24.09.09 17:53) [3]
> Разных классов. EInvalideGraphic & EFOpenError
Штирлиц задумался. Ему понравилось.
Штирлиц задумался еще раз.
> Лучше наверно будет поставить except end;
- А нельзя ли последнюю строку взять и выкинуть?
- ...ты чего? Ради этого все и писалось. [ДВ]
--
Regards, LVT.
Юрий Зотов (2009-09-24 18:43:00) [14]> Германн © (24.09.09 01:40)
type
XXX = class(...);
YYY = class(XXX);
ZZZ = class(...);
=============
procedure Proc(E: Exception);
begin
....
end;
except
on e1: XXX do // Здесь же будет и YYY
Proc(e1);
on e2: ZZZ do
Proc(e2);
end;
Германн (2009-09-24 17:53:00) [15]
> Если исключения разных классов, мне даже трудно представить
> одинаковую их обработку (порядок с проектированием?).
Разных классов. EInvalideGraphic & EFOpenError
Лучше наверно будет поставить except end;
:)
Anatoly Podgoretsky (2009-09-24 08:52:00) [16]> Германн (24.09.2009 01:40:00) [0]
По вертикали их пиши.
Leonid Troyanovsky (2009-09-24 07:40:00) [17]
> Германн © (24.09.09 01:40)
> А разве нет возможности в секции except указать "набор"
> исключений?
Если исключения разных классов, мне даже трудно представить
одинаковую их обработку (порядок с проектированием?).
Ну, а если одного, то, IMHO, достаточно предка.
--
Regards, LVT.