AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fehlerbehandlung - Umgang mit Exceptions

Ein Thema von Mr_G · begonnen am 10. Mär 2009 · letzter Beitrag vom 10. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:35
Hallo zusammen,
ich schreibe gerade eine Klasse und muss mich um die Fehlerbehandlung kümmern. Ich hatte eigentlich vor ein Event zur Verfügung zu stellen, durch das man auf Fehler reagieren kann. Dennoch dachte ich, es wäre vielleicht sinnvoll eigene Exceptions einzubauen falls der Programmierer die gebotene Möglichkeit nicht nutzt.

Das Problem: Wenn ich nun sowohl das Event auslöse als auch eine Execption werfe bekommt der User evtl. zwei Meldungen wenn man im OnError-Event auch eine Meldung ausgeben will.

Ich frage mich nun ob das gegenläufige Ansätze sind? Ich zwinge eben den Programmierer mit Exceptions try...except-Blöcke zu nutzen oder er muss das Event nutzen.
Meine Idee das Problem zu umgehen wäre ein Flag zu nutzen und die Exceptions nur auszulösen, wenn dieses gesetzt ist.

Meine Frage: Wie macht man es denn richtig bzw. was ist guter Programmierstil?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:39
Vergiss die Ereignisse und arbeite mit Exceptions.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:47
Sprich ein OnError-Event ist hier eher der schlechte Stil?
Ich muss zugeben, dass mich das etwas wundert. Ich habe so ein Event schon öfter gesehen und genutzt.
Jan
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:56
In den meisten Fällen muss ich Luckie zustimmen. Sinnvoll halte ich ein OnError nur bei solchen Dingen wie Sockets, wo Fehler aufgrund ihrer asynchronen Natur schwer zu fangen sind. Sonst verleiten solche Events nur zu schlechtem Stil, d.h. einem globalen Handler ("Es ist ein Fehler aufgetreten"). Wenn der Programmierer Code aufruft und dieser Aufruf fehlschlägt, dann muss ihm der Fehler am Aufrufort um die Ohren gehauen werden! Ohne Kenntniss der Aufrufsituation kann sonst keine gute Fehlerbehandlung stattfinden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.828 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:58
Zitat:
Sonst verleiten solche Events nur zu schlechtem Stil, d.h. einem globalen Handler ("Es ist ein Fehler aufgetreten").
Ist aber bei Exception genauso- Auch diese kann man recht global abfangen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:59
Oje... genau hier gehts los: Es handelt sich um eine Klasse zur Kommunikation via Sockets.
Was mach ich denn nun?
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.828 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 19:59
Dann wäre ein Event ok.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 20:01
Es ist umständlich. Der Programmierer muss dann immer noch eine Ereignisbehandlungsroutine schreiben. Mit Exceptions kann er den Fehler in der Routine abfangen in der er auftritt.

Und ausserdem führt das zu einem ewigen hin und her gescrolle im Code. Und wenn du dem Fehlererignis einen Fehlercode mitgibst, hast du in der Ereignisbahendlungsroutine irgendwann mal eine Ellen lange case-Abfrage, das ist auch unschön.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 20:01
Zitat von mkinzler:
Zitat:
Sonst verleiten solche Events nur zu schlechtem Stil, d.h. einem globalen Handler ("Es ist ein Fehler aufgetreten").
Ist aber bei Exception genauso- Auch diese kann man recht global abfangen
Schlimm genug, dass sich diese Praxis in Delphi so gut wie durchgesetzt hat. Ein Event zwingt einen praktisch dazu.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Fehlerbehandlung - Umgang mit Exceptions

  Alt 10. Mär 2009, 20:09
Ich hab da noch eine Idee... die ist aber glaube ich sehr "unsauber":
Das Event bekommt einfach einen var-Parameter mit dem es signalisieren kann ob es den Fehler behandelt hat (so im Stil con CanClose). Wurde der Fehler behandelt wird keine Exception geworfen, falls nicht werfe ich eben die Exception.
Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf