![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не ловится класс исключения [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?