Fehler: Behandeln oder weiterreichen?

Diskussionen über Programmierstil (Code-Formatierung, Namenskonventionen, ...)

Fehler: Behandeln oder weiterreichen?

Beitragvon Bernd Gilles » Mo 22. Mär 2010, 14:15

Wie sollen die Funktionen/Prozeduren und Klassen mit Fehlern umgehen?

Ich persönlich würde es bevorzugen, wenn Fehler in der Codelib grundsätzlich NICHT behandelt, sondern lediglich an den Aufrufer weitergereicht würden.
Grund: Der "Benutzer" einer CodeLib-Methode hat vielleicht ganz andere Ansichten darüber, wie mit einem bestimmten Fehler umzugehen ist als der Entwickler der Methode.
Bernd Gilles
DEV2DEV Softwareentwicklung
Quellcodeverwaltung für Access mit OASIS-SVN
Bernd Gilles
Entwickler
 
Beiträge: 12
Registriert: Mo 22. Mär 2010, 13:54
Wohnort: Willich-Neersen
Accessversion: alles von 2000 bis 2010
Access-Erfahrung: Experte

Re: Fehler: Behandeln oder weiterreichen?

Beitragvon Josef Pötzl » Mo 22. Mär 2010, 14:30

Ich würde trotzdem eine Fehlerbehandlung einbauen, da die Dateien aus der codelib direkt in die Anwendung kommen sollen um dort unverändert verwendet werden zu können.
Wenn man dann die Fehlerbehandlung nur noch in den anwendungspezifischen Teilen einbaut, gibt es ein Problem, wenn man Code-Module aus der Codelib verwendet, die bereits die oberste Aufrufebene darstellen. Aus diesem Grund existiert in den aktuellen Code-Modulen eine Fehlerbehandlung, diese ist allerdings so gestaltet, dass einerseits der Anwendungsentwickler über ein "config-Modul" (base/_config_Application.bas) die Standard-Fehlerbehandlung steuern kann und andererseits sind die "untergeordneten" Prozeduren so eingestellt, dass zwar der Fehler an die Fehlerbehandlung weitergereicht wird, allerdings dort dann wieder ausgelöst wird und so ganz nach oben weitergereicht wird. Das hat den Vorteil, dass man den "Entstehungspfad" des Fehlers ermitteln kann.

Den Fehler Abfangen - im Sinne von Msgbox anzeigen - und dann im Code weitermachen, als wäre nichts gewesen, darf natürlich nicht passieren.

Grund: Der "Benutzer" einer CodeLib-Methode hat vielleicht ganz andere Ansichten darüber, wie mit einem bestimmten Fehler umzugehen ist als der Entwickler der Methode.

Wenn man die Fehlerbehandlungsroutine aber so optimiert, dass sie auch den Anwendungsentwicklern verwenden will, dann passt wieder alles. ;)

mfg
Josef
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: Fehler: Behandeln oder weiterreichen?

Beitragvon Josef Pötzl » Di 30. Mär 2010, 14:17

Noch ein Nachtrag, da mich Rainer gerade auf eine Variante für Klassen aufmerksam machte:

Bei Klassen ist ja zu 100% gegeben, dass sie niemals die äußerste Aufrufebene darstellen können. Somit könnte man die Klassen unabhängig von einer globalen Fehlerbehandlung gestalten und in jede Klasse eine private Fehlerbehandlungsrouting einbauen, in der die Fehlerquelle angepasst wird und dann der Fehler in die Aufrufebene weitergegeben wird.
.. also im Prinzip so, wie ich derzeit bei der allgemeinen Fehlerbehandlung durchführe, aber nur ohne Bezug zu dieser globalen Fehlerbehandlung. (In dieser Prozedur könne man auch noch ein zusätzliches Ereignis auslösen, um vor der Weitergabe an die aufrufende Prozedur, einer "Fehlerüberwachung" den Fehler zu beseitigen zu lassen.)

Vorteil: die Klasse würde das Module "modErrorHandler" nicht benötigen.
Nachteil: die Erstellung der Fehlerbehandlung wird aufwendiger und mir fällt momentan keine praktische Variante ein, wie man dann in der Klassen-Prozedur weiterarbeiten lässt, wenn die Fehlerursache von außen behoben wurde. .. andererseits: will man überhaupt weiterarbeiten lassen?
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: Fehler: Behandeln oder weiterreichen?

Beitragvon raist10 » Di 30. Mär 2010, 15:58

@ Josef

Nachteil: die Erstellung der Fehlerbehandlung wird aufwendiger und mir fällt momentan keine praktische Variante ein, wie man dann in der Klassen-Prozedur weiterarbeiten lässt, wenn die Fehlerursache von außen behoben wurde. .. andererseits: will man überhaupt weiterarbeiten lassen?


Sind wir wieder beim Thema ... das sollte der Entwickler doch selbst entscheiden. Im Zweifel behebt er das Problem von aussen und startet den Durchlauf der Klasse nochmal oder greift dann einfach nur auf die einzelne Funktion zu die fehlt oder er verwendet die Rückgabe des Fehlers um seine eigene Vorstellung von der weiteren Verarbeitung zu realisieren/anzuschieben.

Und irgendwie vermute ich das Bernd Gilles da auch eine ähnliche Ansicht teilt. *g*

Gruß

Rainer
raist10
 
Beiträge: 7
Registriert: Mo 29. Mär 2010, 17:04
Wohnort: Seeham
Accessversion: Access 2007
Access-Erfahrung: Fortgeschritten

Re: Fehler: Behandeln oder weiterreichen?

Beitragvon Josef Pötzl » Do 1. Apr 2010, 19:33

Beispieldatenbank mit ein paar Varianten der Fehlerbehandlung

In der Klasse mit der Fehlerbehandlung baute ich auch noch eine Compiler-Anweisung ein, damit man zw. reiner Klassenbehandlung und Verwendung einer globalen ErrorHandler-Prozedur wechseln kann.
Die Module A_..., B_... und C_... dienen zum Starten der Tests.

A_SoNicht
Fokus in die Prozedur "Proc1" stellen und Prozedur ausführen {F5}.
Dieses Modul soll zeigen, wie eine Fehlerbehandlung nicht sein darf.

B_SoIstEsBesser
Fokus in die Prozedur "Proc1" stellen und Prozedur ausführen {F5}.
In diesem Modul wird richtigerweise der komplette Aufruf abgebrochen, da der Fehler nirgends behoben wurde.

C_TestModul_fuer_Klassen
Fokus in die Prozedur "TesteKlassen" stellen und Prozedur ausführen {F5}.
Dieses Modul zeigt verschiedene Varianten, wie Fehler in Klassen behandelt werden könnten.
Bei der Variante mit der Klasse BeispielMitFehlerbehandlung wird in 2 Fällen auf den Fehler reagiert und für den Test angenommen, dass der Fehler behoben wurde.

Bei der Variante mit der Klasse BeispielOhneFehlerbehandlung sieht man, dass man dabei die Information fehlt, in welchem Code-Module der Ursprung des Fehlers liegt.


BTW: eigentlich hätte ich die Module auch ins Test-Repository stellen können, aber eine fertige Anwendung ist vermutlich praktischer. ;)

mfg
Josef
Dateianhänge
ErrorHandlerTest.zip
Beispiel-mdb mit unterschiedlichen Möglichkeiten zur Fehlerbehandlung
(29.98 KiB) 1581-mal heruntergeladen
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: Fehler: Behandeln oder weiterreichen?

Beitragvon raist10 » Fr 2. Apr 2010, 15:37

Werde mir die Beispiele mal demnächste näher zu Gemüte führen. Aber zu A_SoNicht kann ich schon eindeutig mein /sign geben. ^^

Gruß

Rainer
raist10
 
Beiträge: 7
Registriert: Mo 29. Mär 2010, 17:04
Wohnort: Seeham
Accessversion: Access 2007
Access-Erfahrung: Fortgeschritten


Zurück zu Programmierstil

cron