AGB  ·  Datenschutz  ·  Impressum  







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

wie geht man richtig mit try..except um?

Ein Thema von p80286 · begonnen am 1. Jun 2011 · letzter Beitrag vom 1. Jun 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

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

AW: wie geht man richtig mit try..except um?

  Alt 1. Jun 2011, 12:22
Wenn die Klasse nicht mehr Informationen in der Exception liefert, wirst du da auch nicht mehr rausholen können.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: wie geht man richtig mit try..except um?

  Alt 1. Jun 2011, 12:32
Das on E: Exception do kann man sich als Folgendes vorstellen:
Delphi-Quellcode:
if ExceptObject is Exception then begin
  E := ExceptObject;
  ...
end;
ON prüft als den Type der Exception, also ob dieser mindestens dem angegebenem Typen entspricht und erstellt dann (total delphiuntypisch) eine Variable, mit dem angegebenem Namen (E).

Man kann also mehrere ON-DO-Bedingenen angeben
und auf bestimmte Eigenschaften prüfen, falls ein bestimmter Typ mehr Infos liefert oder man sich die IS-Abfrage sparen will.

PS: ist alles das Selbe...
Delphi-Quellcode:
except
  on E: EOutOfMemory do
    ShowMessage('ungenügend Speicher');
  on E: Exception do
    ShowMessage(Format('unbekannter Fehler "%s": %s', [E.ClassName, E.Message]));
end;
Delphi-Quellcode:
except
  on E: Exception do
    if E is EOutOfMemory then
      ShowMessage('ungenügend Speicher')
    else
      ShowMessage(Format('unbekannter Fehler "%s": %s', [E.ClassName, E.Message]));
end;
Delphi-Quellcode:
except
  if ExceptObject is EOutOfMemory then
    ShowMessage('ungenügend Speicher')
  else
    ShowMessage(Format('unbekannter Fehler "%s": %s', [ExceptObject.ClassName, (ExceptObject as Exception).Message]));
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: wie geht man richtig mit try..except um?

  Alt 1. Jun 2011, 12:33
"Informationanreicherung" wäre hier das Mittel der Wahl.
Das macht natürlich etwas Arbeit, weil man die Exceptions abfangen muss
und mit lokalen Informationen anreichert.
Delphi-Quellcode:
try
    DM_ADOQuery1.open;
except
    on E: Exception do
    begin
       E.Message := 'Fehler in Abfrage '+ GetComponentName(DM_ADOQuery1)+#13#10+
          E.Message;
       raise; // Exception erneut auslösen
    end;
end;
Hier noch die Hilfsfunktion
Delphi-Quellcode:
function GetComponentName(comp:TComponent) : string;
begin
   Result := comp.Name;
   if Result = 'then
   begin
      // wenn die Komponenten keinen Namen hat, dann vielleicht einen Index
      if comp.ComponentIndex <> -1 then
         Result := '['+comp.ClassName+'#'+IntToStr(comp.ComponentIndex)+']'
      else
         // nur Klassenname
         Result := '['+comp.ClassName+']';
   end;
end;
Andreas
  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 04:49 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