AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception wird nicht angezeigt

Ein Thema von Die Muhkuh · begonnen am 6. Mai 2005 · letzter Beitrag vom 6. Mai 2005
Antwort Antwort
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#1

Exception wird nicht angezeigt

  Alt 6. Mai 2005, 10:54
Hi,

Delphi-Quellcode:
uses
  xmldom, XMLIntf, msxmldom, XMLDoc, SysUtils;

type
  EXMLException = Exception;

...
// Eine Procedure
  try
    FXML.LoadFromFile(FFileName); // Hier passiert ein Fehler
  except
    DoError('Datei "%s" konnte nicht geladen werden!' + #13#10 +
      'Bitte überprüfen Sie den Pfad!', [FFilename]);
  end;
...

procedure TXML.DoError(M: String; const Args: array of const);
begin
  EXMLException.Create(Format(M, Args));
end;
Eigentlich sollte doch die Exception angezeigt werden, aber die kommt nicht. Es wird in den Except-Block gesprungen, dann steht der Debugger auf "DoError" und überspingt das dann einfach, wenn ich wieder F7 drück.

Der Code steht in einer Unit (ohne eine DFM).



Danke schon ma im Vorraus
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#2

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:03
Ich denke mal nur eine neue Exception erstellen reicht nicht. Du mußt dies dann auch "werfen" (mit raise).
Gruß von der USS Voyager

Neelix
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:24
Hi,

raise EXMLException.Create('Kann Datei nicht laden!'); geht leider auch nicht.

Der Code steht im except-block.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:30
Hi,

erstmal musst Du das auf jeden fall mit Raise schreiben.

Zudem würde ich eine Exception class immer so deklarieren (habe ich bisher nur so gesehen):
Delphi-Quellcode:
type
  EXMLException = class(Exception)
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:33
Zitat von mirage228:
Hi,

erstmal musst Du das auf jeden fall mit Raise schreiben.

Zudem würde ich eine Exception class immer so deklarieren (habe ich bisher nur so gesehen):
Delphi-Quellcode:
type
  EXMLException = class(Exception)
end;
mfG
mirage228
Hi,

jetzt bekomme ich, wenn ich durchsteppe, eine Meldung, aber, wenn ich das Programm so starte, bekomme ich diese nicht.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:37
Hi,

mein Testcode funktioniert ohne Beanstandungen:

Delphi-Quellcode:
type
  ENewException = class(Exception) end;

procedure RaiseError(const msg: string);
begin
  raise ENewException.Create(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Obj: TStringList;
begin
  try
    Obj := nil;
    Obj.Text := 'neu';
  except
    RaiseError('schwära fäla');
  end;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 11:38
Da du immer nur so Bruchstücke vom Code zeigst und man irgenwie nichts zusammenhängendes zu sehen bekommt, hier mal ein beispiel, wie man eine eigene Exception wirtft und behandelt.

Delphi-Quellcode:
type
  EInvalidPW = class(Exception);

const
  PASSWORD = 'test';

procedure CheckPWD(Pwd: String);
resourcestring
  rsInvalidPw = 'Passwort %s ist ungültig';
begin
  if Pwd <> PASSWORD then
    raise EInvalidPW.CreateFmt(rsInvalidPw, [Pwd]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    CheckPWD('tset');
  except
    on E: EInvalidPW do ShowMessage(E.Message);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Exception wird nicht angezeigt

  Alt 6. Mai 2005, 12:07
Hi,

ich hab das Projekt ma an den mirage228 geschickt. Es ging keine Minute da hatte er die Lösung:

Delphi-Quellcode:
constructor TXML.Create(FileName: String; NodeName: String;
  CreateIfNotExists: Boolean);
var
  Temp: IXMLDocument;
begin
  FFileName := FileName;

  if CreateIfNotExists then
  begin
    if (not (FileExists(FFileName))) then
    begin
      TFileStream.Create(FFilename, fmCreate).Free;

      try
        with TStringList.Create do
        begin
          Add(Format('<%s>', [NodeName]));
          Add(Format('</%s>', [NodeName]));
          SaveToFile(FFilename);
          Free;
        end;
      except
        DoError('Fehler beim erstellen der Datei "%s"!', [FileName]);
      end;
    end;
  end;

  FXML := nil; // << Das hier hat gefehlt. Wenn man das weglässt, zeigt es die Exception NICHT an.

  try
    FXML := TXMLDocument.Create('G');
    FXML.LoadFromFile(FFileName);

    if (not (FXML.DocumentElement.NodeName = NodeName)) then
      DoError('Node "%s" nicht gefunden!', [NodeName]);
  except
    DoError('Datei "%s" konnte nicht geladen werden!' + #13#10 +
      'Bitte überprüfen Sie den Pfad!', [FFilename]);
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 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