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.