AGB  ·  Datenschutz  ·  Impressum  







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

Fehlerbehandlung mit Try..Except

Ein Thema von mickmack · begonnen am 27. Okt 2003 · letzter Beitrag vom 2. Nov 2003
 
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Fehlerbehandlung mit Try..Except

  Alt 2. Nov 2003, 20:36
Hey Mickmack,

Wenn Du ohnehin eigene Exception-Typen definierst, um unabhängig von den spezifischen SQLExceptions oder IOExceptions zu sein und abstraktare, der wirklichen Aufgabe entsprechenden Excpeptions zu werfen, dann bietet sich ein Basistyp zB
Delphi-Quellcode:
  EMyException = class(Exception)
  public
    procedure HandleError;virtual;abstract;
  end;
an, von Dem Du dann erbst und die Methode HandleError überschreibst, zB
Delphi-Quellcode:
  EMyOpenFile = class(EMyException)
  public
    procedure HandleError;override;
  end;
Der Entsprechde Try..Except-Block könnte dann so aussehen
Delphi-Quellcode:
try
  DoSth;
except
  on E:EMyException do HandleException(E);
  on E:Exception do raise EMyUnknownException.CreateChained(E);
end;
mit der Methode
Delphi-Quellcode:
procedure TMyClass.HandleException(const AnException: EMyException);
begin
  Assert(Assigned(AnException));
  AnException.HandleException;
end;
Die wirkliche Verarbeitung geschieht dann in der jeweiligen Implementierung von HandleException, also zB EMyOpenFile.HandleException, EMyReadFile.HandleException, etc. mithilfe von Polymorphie.

Etwas unglücklich an dieser Lösung ist die Tatsache, dass die wirkliche Handlung (zB der Aufruf von ShowMessage) direkt in der Klasse wäre und damit unflexibel ist. Zur Lösung empfehle ich Dir hier das sog. "Visitor Pattern [Gamma et. al.]" Bei Google suchendelphi AND visitor AND pattern.

Eine lesenswerte Serie über Exceptions (allerdings in Java) stammt von Brian Goetz, Exceptional practices, Part 1-3.

HTH
gruß, choose
  Mit Zitat antworten Zitat
 


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:05 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