Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Soll (After-)Event trotz Fehler feuern? (https://www.delphipraxis.net/150135-soll-after-event-trotz-fehler-feuern.html)

s.h.a.r.k 8. Apr 2010 13:03


Soll (After-)Event trotz Fehler feuern?
 
Hallo zusammen,

und zwar habe ich im Moment eine eher philosophische Fragen. Und zwar habe ich mehrere Methoden, die zu Beginn ein OnBeforeXYZ-Event und am Ende ein OnAfterXYZ auslösen. Nun stellt sich mir die Frage, ob das OnAfterXYZ-Evente unbedingt ausgelöst werden soll, auch wenn in der eigentlichen Methode eine Exception auftritt!?

Hier nochmals zur Verdeutlichung ein wenig Code:

Delphi-Quellcode:
procedure TBlub.AMethod();
begin
  OnBeforeXYZ();

    raise Exception.Create('Juchee');

  OnAfterXYZ();
end;

{ ... oder das gleich mit einer try-finally-Konstruktion }

procedure TBlub.AMethod();
begin
  OnBeforeXYZ();
  try

  raise Exception.Create('Juchee');

  finally
    OnAfterXYZ();
  end;
end;

Blup 8. Apr 2010 14:38

Re: Soll (After-)Event trotz Fehler feuern?
 
OnBefor und OnAfter wird häufig verwendet, um wärend bestimmter Aktionen andere Funktionen zu sperren/entsperren, Cursor zu wechseln usw.. Das Pärchen sollte schon komplett sein.

ele 8. Apr 2010 14:48

Re: Soll (After-)Event trotz Fehler feuern?
 
Ich denke das kommt ganz auf den Fall an und kann nicht so allgemein definiert werden.

Grundsätzlich muss man sich überlegen wozu die Before- und After-Events überhaupt benötigt werden. Aber ich denke dass man in der Regel im After-Event Resourcen aufräumen möchte, die man in Before-Event alloziert hat. Dann ist der try-finally-Block schon nötig.

Die Frage ist ob man nicht noch zusätzlich einen Error-Event einbauen möchte. Vor allem wenn die Events von einem eigenen Thread heraus aufgerufen werden.

Man könnte sich auch überlegen eine allfällige Exception dem After-Event als Parameter mitzuliefern (nil falls kein Fehler), dann kann der Benutzer im Event-Handler selber entscheiden was er nun tun sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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