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