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

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

Не ловится класс исключения [D7, XP]


Megabyte ©   (2007-05-17 14:31:00) 

Парсю xml-файлы, формирующиеся в одной папке сторонним ПО. Бывает, что файл создан некорректно(редко), то я отлавливаю на общее исключение(Exeption) и просто говорю, что процедура не смогла пропарсить файл и он потом кидается в определенную папку.
Понадобилось разделить ошибки парсинга от остальных.
Выяснил класс возникающих исключений(DomException), в обработчике Except пытаюсь отловить ислючение этого класса, обработчик игнорируется, т.е. как-будто его нет или исключение получается другого класса. Не могу понять причину?!
try
...
except
   on E : DomException do
   begin
     любое действие, кроме showmessage(e.ClassName);
   end;
   on E: Exception do
   begin
     showmessage(e.ClassName);
     //result := false;
   end;
 end; //except

В результате выдается сообщение "DomException"!


Megabyte   (2007-05-17 17:40:00) [1]

Вот блин, точно ведь. Все сделал, всем спасибо!
сделал как в [16]


stakan   (2007-05-17 17:18:00) [2]


> и до кучи в xmldom
> xmlutil значицца нужно после ставить или убрать из юзес
> xmldom
>

Или писать
on E: XmlUtil.DomException do ...


clickmaker   (2007-05-17 17:12:00) [3]


> DomException реализован в файле XmlUtil

и до кучи в xmldom
xmlutil значицца нужно после ставить или убрать из юзес xmldom


stakan   (2007-05-17 17:04:00) [4]


> Megabyte

Утебя часом в uses XMLDom нет?


Megabyte   (2007-05-17 16:52:00) [5]

Спасибо за попытку помочь. :)


Сергей М.   (2007-05-17 16:50:00) [6]


> может реализация кривая...


Судя по отсутствию традиционного EDomException, "кривизны" там немало.


Megabyte   (2007-05-17 16:46:00) [7]

Ну только так и делать придется. Просто хотел по-грамотному. :)

> try
...
except
on E: Exception do
   begin
     if (e.ClassName = 'DomException') then
       showmessage('ошибка парсинга')
     else
       showmessage(e.ClassName);
     //result := false;
   end;
 end; //except

Выдает сообщение "ошибка парсинга". %)

з.ы. Класс исключений DomException реализован в файле XmlUtil, может реализация кривая...


clickmaker   (2007-05-17 16:36:00) [8]

if (e.ClassName = 'DomException') then
ы?


Сергей М.   (2007-05-17 16:34:00) [9]


> хотя возникает именно оно


Значит не "именно оно".


Megabyte   (2007-05-17 16:28:00) [10]


> Сергей М. ©  (17.05.07 16:16) [7]

Да какие разборки, что ты :)
Я реально не понял, что ты этим хотел сказать!

Только объявление else ничего не изменило.
try
...
except
 on E : DomException do
 begin
  любое действие, кроме showmessage(e.ClassName);
 end;
 on E: Exception do
 begin
  showmessage(e.ClassName);
 end;
end; //except
по сути одно и то же
try
...
except
 on E : DomException do
 begin
  любое действие, кроме showmessage(e.ClassName);
 end;
 else
  showmessage('other');
 end;
end; //except

Все равно не ловит класс сообщения DomException, хотя возникает именно оно!


Сергей М.   (2007-05-17 16:16:00) [11]


> Хотелось бы разобраться


Любые"разборки" начинай с чтения справки.
И только послеэтого претендуй на роль обвинителя кого бы то ни было в ахинее)


Сергей М.   (2007-05-17 16:14:00) [12]


> Megabyte ©   (17.05.07 16:12) [5]


> Ты написал ахинею


Да неужели ?)

И в справке по ON-clause - тоже ахинея, такнадо понимать твои претензии ?)


Megabyte   (2007-05-17 16:12:00) [13]


> Сергей М. ©  (17.05.07 16:10) [4]

Ты написал ахинею, а мне предлагаешь что-то додумать...

Откуда я знаю, что ты имел ввиду. Если то, что использовать конструкцию if...else, то это можно конечно. Но чесать левое ухо правой ногой - изврат. Хотелось бы разобраться!


Сергей М.   (2007-05-17 16:10:00) [14]


> Megabyte ©   (17.05.07 16:02) [3]
>
>


> Это даже не скомпилится


Тебе разжевать, в рот положить и поглотить ?
Или сам дотумкаешь паскаль-синтаксис подправить ?


Megabyte   (2007-05-17 16:02:00) [15]


> clickmaker ©  (17.05.07 14:39) [1]

чем парсишь? TXmlDocument?

TXMLTransform


> Сергей М. ©  (17.05.07 14:53) [2]

Не понял, что это? Это даже не скомпилится...


Сергей М.   (2007-05-17 14:53:00) [16]

try
...
except
  on E : DomException do
  begin
    ...
  end;
else
    showmessage(e.ClassName);
end;


clickmaker   (2007-05-17 14:39:00) [17]

чем парсишь? TXmlDocument?


Наверх

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