![]() |
Re: Rückgabewert für Login-Funktion?
Zitat:
|
Re: Rückgabewert für Login-Funktion?
Exception = Ausnahme. An und für sich ist das eine philosophische Frage, aber man könnte es evtl. so sagen: Exceptions verwende ich, wenn auf Grund des aufgetretenen Fehlers ein stabiles Weiterlaufen der Methode nicht mehr möglich ist, bzw. die Funktion nicht mehr gewahrt ist - also der Zustand nach Auftreten undefiniert ist. Das Exceptionshandling kümmert sich dann um eine saubere Rückkehr aus dem Call, und informiert den Aufrufer darüber, dass eine Situation aufgetreten ist, die nicht sein darf/kann.
Im Falle einer Login-Funktion, die es eben zur Aufgabe hat zu prüfen ob die Daten gültig sind, ist der Fall der Ungleichheit wohl definiert, und keine "Ausnahme", sondern ein erwartetes mögliches Ergebnis, und der Programmfluss wird keineswegs kompromitiert. Von daher würde ich in diesem Fall nicht einmal auf die Idee kommen, Exceptions einzusetzen. Etwas anderes ist es, wenn z.B. mit einem String aus einer Datei verglichen werden soll, die Datei aber nicht existiert. Hier ist das erwartete Verhalten: Datei ist da, String ist drin, so wirds schließlich ausgeliefert. In dem Fall ist eine Ausnahme eingetreten, zumal es die Gesamtfunktion nachhaltig beeinflusst: KEIN Login kann mehr funktionieren - Prinzipbedingt, nicht weil der User falsche Daten eingegeben hat (was man durchaus erwarten kann), sondern weil etwas unerwartetes passiert ist. Aber auch das ist imho eigentlich noch zu "weich" für eine Exception. Typische Fälle sind da eher Griffe in Speicherbereiche ausserhalb jeglicher Range, Stackoverflows, defekte Hardware usw.. Das meiste andere ist in definierten Zuständen behandelbar. Oftmals sind die Messages der Exceptions auch für den Kunden nicht aussagekräftig. Daher würde ich auch niemals eine Exception "einfach so" durchflutschen lassen, sondern zumindest einen generellen Handler machen, der genau beschreibt was wobei nicht geklappt hat, und zwar funktional, damit der User einen Bezug dazu hat - mit technischem Blabla hat der ja meist nichts zu tun - und hänge die Exception-Message daran an, damit er bei einer Supportanfrage auch den technisch relevanten Teil durchgeben kann. Man stelle sich vor Otto zu sein, und darf auf einmal lesen "Listeninxed überschreitete das Maximum (-1)", als man versucht eine mp3-Datei in seinen Player zu Drag-und-Droppen. Für Otto total nutzlos. |
Re: Rückgabewert für Login-Funktion?
Zitat:
|
Re: Rückgabewert für Login-Funktion?
@Medium: Ich verstehe deine Argumentation. Aber, und auch das ist natürlich philosophisch, du beschreibst die Nutzung von Exceptions ausschließlich für unerwartete Fehler. Jedoch ist eine Exception, die man abfängt, nicht unerwartet - im Gegenteil, wenn man zum Beispiel einmal FxCop über ein Programm laufen lässt, wird der sich beschweren, wenn man einen allgemeinen Exception-Handler gebaut hat - weil man damit einen unerwarteten (!) Fehler abfängt, obwohl man nicht weiß, wie er zu behandeln ist. Fängt man jedoch eine spezifische Exception, erwartet man sie ja und kann damit umgehen (und sei es im schlimmsten Fall nur eine Fehlermeldung). Kann man es nicht, fängt man sie eben nicht oder wirft sie weiter.
Zitat:
Ich finde nur, eine Login-Funktion hat die Funktion, einen Login durchzuführen - klappt das nicht, ist das schon irgendwie eine Ausnahme. Aber da genau drehen wir uns wieder im Kreis, es ist eine Definitionsfrage. Ich nehme eure Argumentation einfach einmal auf und denke das nächste mal drüber nach, wenn ich in so eine Situation komme. Hängt das vielleicht auch ein bisschen an der jeweiligen Umgebung, die man verwendet? In C++ zum Beispiel ist es in der STL auch unüblich, Exceptions zu werfen, oder es gibt teilweise Operationen doppelt (einmal mit Fehlercode und einmal mit Exception), und auch Qt kommt weitgehend ohne aus. In Java oder .NET sieht man Exceptions hingegen überall. |
Re: Rückgabewert für Login-Funktion?
Hi,
Zitat:
Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz