Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi try...except erkennt Exception nicht (https://www.delphipraxis.net/97920-try-except-erkennt-exception-nicht.html)

BKempf 18. Aug 2007 21:02


try...except erkennt Exception nicht
 
Hallo,

Delphi 6 Enterprise mag folgenden Code nicht:
Delphi-Quellcode:
  try
    XML.LoadFromFile(XMLFile);
  except
    on E:EDOMParseError do
    begin
      //
    end;
  end;
XML ist vom Typ TXMLDocument.

Der Name der XML-Datei ist gültig, die Datei selbst existiert aber nicht.
Das erwartete Verhalten wäre, dass die Fehlerbehandlung den EDOMParseError abfängt, damit ich ihn behandeln kann.
Stattdessen läuft der Compiler bis zum EDOMParseError und meckert, dass er den Bezeichner nicht kenne.
Nachschlagen in der OH ergab, dass die Exception in der Unit DB eingeführt wird, also habe ich sie in die uses übernommen. Unabhängig davon, ob DB im interface- oder im implementation-Teil eingebunden wird, bleibt das Resultat dasselbe.

Wenn ich stattdessen E:Exception behandle, funktioniert es wunderbar, aber mir geht es genau um den EDOMParseError, da ich die Exception nicht einfach crunchen will.

Kennt jemand eine Lösung, wie ich dem Compiler die genannte Exception doch noch schmackhaft machen kann?

semo 18. Aug 2007 21:04

Re: try...except erkennt Exception nicht
 
was wird denn bei verwendung von E:Exception für ein exceptiontyp genannt?

Hawkeye219 18. Aug 2007 21:13

Re: try...except erkennt Exception nicht
 
Hi,

grep search meint: Unit xmldom einbinden...

Gruß hawkeye

semo 18. Aug 2007 21:15

Re: try...except erkennt Exception nicht
 
erzeugst du denn überhaupt eine Instanz von TXMLDocument?

BKempf 18. Aug 2007 21:22

Re: try...except erkennt Exception nicht
 
Bei Verwendung von E:Exception oder ohne Fehlerbehandlung wird EDOMParseError genannt, die Instanz von XMLDocument existiert und xmldom hilft...

Danke für die Antworten. Anscheinend bin ich einem Fehler in der OH auf den Leim gegangen.
Schönen Abend!

semo 18. Aug 2007 21:30

Re: try...except erkennt Exception nicht
 
wenn du prüfen willst ob datei vorhanden,
werden bereits ausreichende validierungsfunktionen mitgeliefert:

Delphi-Quellcode:
  // prüfen ob XML-File vorhanden:
  if not xmlDoc.load(AFileName) then
  begin
    // prüfen ob XML-File "wohlgeformt" ist:
    If xmlDoc.parseerror.errorCode <> 0 then
    begin


      MessageDlg( Format('XML-Datei %s ist nicht wohlgeformt --> Abbruch'+#13#10+#13#10+
                  'Code:    %d' + #13#10 +
                  'Reason:  %s' + #13#10 +
                  'URL:     %s' + #13#10 +
                  'SrcText: %s' + #13#10 +
                  'Line:    %d' + #13#10 +
                  'LinePos: %d' + #13#10 +
                  'FilePos: %d' + #13#10,
                  [AFileName,
                  xmlDoc.parseerror.Get_errorCode,
                  xmlDoc.parseerror.Get_reason(),
                  xmlDoc.parseerror.Get_url,
                  xmlDoc.parseerror.Get_srcText,
                  xmlDoc.parseerror.Get_line,
                  xmlDoc.parseerror.Get_linepos,
                  xmlDoc.parseerror.Get_filepos]),
                  mtWarning, [mbOK], 0);
      Exit;
    end else
    begin
      AddToMemo('XML-Datei nicht vorhanden!');
      exit;
    end;
  end else
    AddToMemo('XML-Datei erfolgreich geladen!');


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz