Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Standard-Exceptions lokalisieren

  Alt 25. Jun 2014, 22:02
Sorge doch einfach dafür, das keine Exception bis an die Oberfläche kommt.
Die Holzhammermethode ist, per TApplication.OnException einfach alle Exceptions abzufangen.
Die richtige (imho) Methode ist die, um jede Klasse bzw. System einen Exceptionwrapper zu legen.

Das bedeutet in PseudoCode:

Delphi-Quellcode:
Procedure TOuterClass.Method;
Var
  outerExceptionInfo : TOuterExceptionInfo;

Begin
  Try
    InnerClass.AnotherMethod();
  ...
  Except
    On E:EInnerException do begin
      outerExceptionInfo := HandleInnerException(E);
      raise EOuterException.Create(outerExceptionInfo);
// alternativ: AnotherMethod nochmals aufrufen (falls das Sinn macht)
    End;
    On E:Exception do
      raise EFatalException.Create(E);
  End
End;
D.h. Du verbirgst die inneren Exception, indem Du sie behandelst, also z.B. den Grund auflöst und nochmal probierst. Das geht nur manchmal, denn wenn z.B. das Kennwort falsch ist, ist es falsch, da wird man nichts machen können. Aber wenn ein Deadlock aufgetreten ist, kann man z.B. kurz warten und es dann nochmal probieren usw. Falls Du die Exception nicht auflösen kannst, dann kapselst Du die ziemlich wirren Aussagen (EIdConnectionAbortException, EFooBarBlaFasel usw) und verpasst dann der EOuterException anständige teutonisch-anglistische Haikus. Oder ähnlich Seriöses.

Ein wenig Aufwand, aber deinem Bestreben, ästhetisch ansprechende Software zu schreiben, durchaus zuträglich.
  Mit Zitat antworten Zitat