Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Вниз

Секция except   Найти похожие ветки 

 
Германн ©   (2009-09-24 01:40) [0]

А разве нет возможности в секции except указать "набор" исключений?
То бишь:
except
 on XXX, YYY, ZZZ
do
?


 
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
2-1253624052
faiwer
2009-09-22 16:54
2009.11.08
Trace Into


2-1253654979
Евгений Р.
2009-09-23 01:29
2009.11.08
Использование $IFDEF


2-1254033768
faiwer
2009-09-27 10:42
2009.11.08
Autosize для RichEdit


2-1253690592
QAZ
2009-09-23 11:23
2009.11.08
Аналог writeln


15-1252276329
KilkennyCat
2009-09-07 02:32
2009.11.08
TTreeNode с Визибле-Невизибле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский