Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
9-1147630654
Kn1ght
2006-05-14 22:17
2007.04.15
Вертикальное падене


15-1173723374
Ringo
2007-03-12 21:16
2007.04.15
Вэб-камеры по всему миру.


15-1174497274
Другой
2007-03-21 20:14
2007.04.15
Старые пивные этикетки (фото)


15-1174417807
исследователь
2007-03-20 22:10
2007.04.15
DoTa Allstars


2-1175005942
Jolik
2007-03-27 18:32
2007.04.15
Как выкрутиться из такой ситуациии...