Текущий архив: 2007.04.15;
Скачать: CL | DM;
Вниз
Отлов нужного исключения Найти похожие ветки
← →
Megabyte © (2007-03-26 10:16) [0]Есть компонент TXMLTransform в программе, которая парсит XML-файлы, преобразуя их в нужный формат для вставки в БД.
Так получилось, что теперь попадаются криво сформированные XML-файлы, надо обрабатывать исключение. message исключения выглядит так: "XML Parse Error".
Если я пишу так:on E: XML PArse Error do ...
, то ругается на неизвестный идентификатор. Посмотрел в исходнике по XML-компонентам, там описано только одно исключение TranslateException.
При ошибке парсинга мой код не отлавливает на TranslateException исключение.
Может кто подскажет нужный класс исключения или где его найти/посмотреть?
Среди стандартных классов нужный не нашел. Самый общий класс Exception не хочется использовать, т.к. могут быть и другие ошибки.
← →
Megabyte © (2007-03-26 10:55) [1]Хм, я немножко стормозил. Из Дельфы запустил прогу, она выдала нужный класс исключения DOMException, НО в except все равно не отлавливается данное исключение! :(
← →
Плохиш © (2007-03-26 10:57) [2]
> Может кто подскажет нужный класс исключения или где его
> найти/посмотреть?
А в отладчике тип исключения посмотреть, слабо?
← →
Плохиш © (2007-03-26 10:57) [3]EParserException?
← →
Megabyte © (2007-03-26 11:17) [4]
> EParserException?
Undeclared Identifier.
Суть в том, что не ловится на тот тип исключения, кот. указывается при возникновении этого исключения: DOMException!!!
← →
Плохиш © (2007-03-26 11:27) [5]Осмелюсь предположить ошибку в 17й строке.
← →
Megabyte © (2007-03-26 11:33) [6]
> begin
try
begin
tmr_upd.Enabled := false;
btn_exit.Caption := "???????";
dtini := ReadIni;
datm.fdb_scrp.DBName := dtini.namedb;
datm.fdb_scrp.Connected := true;
if findfirst(dtini.xmldir + "\*.xml", faAnyFile, search_imei) = 0 then
begin
repeat
trans_upd.SourceXmlFile := dtini.xmldir + "\" + search_imei.Name;
cds_psn.Active := false;
cds_psn.XMLData := trans_upd.Data; //ошибка парсинга здесь
cds_psn.Active := true;
//???? ?????? PSN, ?? ?????????? ? errdir
if cds_psn.FieldList.Fields[0].Value = "" then
begin
MoveFileTo(dtini.xmldir, dtini.errdir, search_imei.Name);
continue;
end;
onlyname := search_imei.Name;
delete(onlyname, length(onlyname)-3,4);
datm.upd_psn(onlyname, cds_psn.FieldList.Fields[0].AsString);
//???? ???? ???????????? ? ??, ?? ?????????? ? arhdir
if fcount then
begin
MoveFileTo(dtini.xmldir, dtini.arhdir, search_imei.Name);
end
else
//??????????? ???????????? ?????? ? ???????????? imei ? ????
//? ??????????? ? ????? Undefined
begin
MoveFileTo(dtini.xmldir, dtini.logdir, search_imei.Name);
WriteLogFile(search_imei.Name);
end; //else
until FindNext(search_imei) <> 0;
end; //if
end; //try
except
on E: "EDOMParseError/DomException/Exception" do
begin
MessageBox(0, PChar(IntToStr(e.message)), "??????????????", MB_ICONWARNING);
end;
end; //except
Это, естественно, написал "EDOMParseError/DomException/Exception" как возможные варианты.
Работает только приOn E: Exception
← →
Megabyte © (2007-03-26 11:35) [7]Опс, само собой вместо
PChar(IntToStr(e.message))
будетPChar(e.message)
Просто тестировал там...
Страницы: 1 вся ветка
Текущий архив: 2007.04.15;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.029 c