Hallo,
ich habe mir letztens Gedanken über die Unterschiede zwischen Fehler (als Rückgabewert einer Funktion/Klasse) und Exceptions (PHP5) gemacht und wollte einmal eure Meinung dazu hören. Generell würde ich folgende Unterschiede sehen:
Exceptions
- Sollten nur für Ausnahmefehler verwendet werden, die den weiteren (geplanten) Programmablauf unmöglich machen
- Können nur Informationen über das Fehlschlagen einer Aktion liefern
Fehler
- Sollten für erwartete Situationen benutzt werden, insbesondere bei der Interaktion mit Benutzereingaben
- Beeinflussen den Programmablauf nicht und sind daher für unkritische Fälle geeignet
Angenommen, eine Klasse soll ein Formular auswerten und die fehlerhaften Felder zurückgeben. Ein Fehlermanagement könnte nun so aussehen, dass die Klassenfunktionen im Erfolgsfall TRUE zurückgeben, ansonsten eine Fehlerklasse, die Informationen über die Fehlerquelle und -art enthält. Theoretisch könnte man auch auf Exceptions zurückgreifen und nach Prüfung aller Felder einen Exception werfen, aber meiner Meinung nach stört das den Programmfluß, insbesondere weil Fehleingaben erwartete Situationen sind. Natürlich ist die Definition für "erwartete Situation" Anssichtssache. Wie handhabt ihr sowas in der Praxis?
ich habe mir letztens Gedanken über die Unterschiede zwischen Fehler (als Rückgabewert einer Funktion/Klasse) und Exceptions (PHP5) gemacht und wollte einmal eure Meinung dazu hören. Generell würde ich folgende Unterschiede sehen:
Exceptions
- Sollten nur für Ausnahmefehler verwendet werden, die den weiteren (geplanten) Programmablauf unmöglich machen
- Können nur Informationen über das Fehlschlagen einer Aktion liefern
Fehler
- Sollten für erwartete Situationen benutzt werden, insbesondere bei der Interaktion mit Benutzereingaben
- Beeinflussen den Programmablauf nicht und sind daher für unkritische Fälle geeignet
Angenommen, eine Klasse soll ein Formular auswerten und die fehlerhaften Felder zurückgeben. Ein Fehlermanagement könnte nun so aussehen, dass die Klassenfunktionen im Erfolgsfall TRUE zurückgeben, ansonsten eine Fehlerklasse, die Informationen über die Fehlerquelle und -art enthält. Theoretisch könnte man auch auf Exceptions zurückgreifen und nach Prüfung aller Felder einen Exception werfen, aber meiner Meinung nach stört das den Programmfluß, insbesondere weil Fehleingaben erwartete Situationen sind. Natürlich ist die Definition für "erwartete Situation" Anssichtssache. Wie handhabt ihr sowas in der Praxis?