![]() |
try...except erkennt Exception nicht
Hallo,
Delphi 6 Enterprise mag folgenden Code nicht:
Delphi-Quellcode:
XML ist vom Typ TXMLDocument.
try
XML.LoadFromFile(XMLFile); except on E:EDOMParseError do begin // end; end; 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? |
Re: try...except erkennt Exception nicht
was wird denn bei verwendung von E:Exception für ein exceptiontyp genannt?
|
Re: try...except erkennt Exception nicht
Hi,
grep search meint: Unit xmldom einbinden... Gruß hawkeye |
Re: try...except erkennt Exception nicht
erzeugst du denn überhaupt eine Instanz von TXMLDocument?
|
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! |
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 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz