Ist es empfehlenswert, Ausnahmen zu verwenden und Ausnahmen auszulösen / abzufangen, anstatt 0 oder 1 von Funktionen zurückzugeben und dann if / else zu verwenden, um die Fehler zu behandeln? Auf diese Weise wird es einfacher, den Benutzer über das Problem zu informieren.
Nein nein Nein!
Mischen Sie keine Ausnahmen und Fehler. Ausnahmen sind außergewöhnlich. Fehler gibt es nicht. Wenn Sie einen Benutzer auffordern, eine Menge eines Produkts einzugeben, und der Benutzer "Hallo" eingibt, liegt ein Fehler vor. Dies ist keine Ausnahme: Es ist nichts Außergewöhnliches, wenn eine ungültige Eingabe des Benutzers angezeigt wird. Warum können Sie Ausnahmen nicht in Ausnahmefällen verwenden, z. B. bei der Validierung von Eingaben? Andere erklärten es bereits und zeigten eine gültige Alternative für die Eingabevalidierung.
Dies bedeutet auch, dass sich der Benutzer nicht um Ihre Ausnahmen kümmert und das Anzeigen der Ausnahmen sowohl unfreundlich als auch gefährlich ist . Beispielsweise zeigt eine Ausnahme während der Ausführung einer SQL-Abfrage häufig die Abfrage selbst an. Sind Sie sicher, dass Sie ein Risiko eingehen möchten, um diese Botschaft allen zu zeigen?
Es kann mehr als ein Fehler auftreten, z. B. ein Datenbankproblem, ein doppelter Eintrag, ein Serverproblem usw. Wenn während der Registrierung ein Problem auftritt, muss der Benutzer darüber informiert werden.
Falsch. Als Benutzer muss ich Ihre Datenbankprobleme, doppelten Einträge usw. nicht kennen. Ihre Probleme interessieren mich wirklich nicht . Was ich wissen muss ist, dass ich einen Benutzernamen eingegeben habe, der bereits existiert. Wie bereits gesagt, muss eine falsche Eingabe von mir einen Fehler auslösen, keine Ausnahme.
Wie werden diese Fehler ausgegeben? Es kommt auf den Kontext an. Für einen bereits verwendeten Benutzernamen würde ich gerne eine kleine rote Fahne neben dem Benutzernamen sehen, bevor ich das Formular abschicke, die besagt, dass der Benutzername bereits verwendet wird. Ohne JavaScript muss dieselbe Flagge nach der Übermittlung angezeigt werden.
Bei anderen Fehlern würden Sie eine vollständige Seite mit einem Fehler anzeigen oder eine andere Methode wählen, um den Benutzer darüber zu informieren, dass ein Fehler aufgetreten ist (z. B. eine Meldung, die angezeigt wird und dann oben auf der Seite ausgeblendet wird). Die Frage bezieht sich dann mehr auf die Benutzererfahrung als auf die Programmierung.
Aus Sicht der Programmierer werden Sie den Fehler je nach Art des Fehlers auf unterschiedliche Weise verbreiten. Wenn beispielsweise ein Benutzername bereits vergeben ist, gibt eine AJAX-Anfrage nach http://example.com/?ajax=1&user-exists=John
ein JSON-Objekt zurück, das Folgendes angibt:
- Dass der Benutzer bereits existiert,
- Die Fehlermeldung, die dem Benutzer angezeigt werden soll.
Der zweite Punkt ist wichtig: Sie möchten sicherstellen, dass beim Senden des Formulars mit deaktiviertem JavaScript und beim Eingeben eines doppelten Benutzernamens mit aktiviertem JavaScript dieselbe Meldung angezeigt wird. Sie möchten den Text der Fehlermeldung nicht im serverseitigen Quellcode und in JavaScript duplizieren!
Dies ist tatsächlich die Technik, die von Stack Exhange-Websites verwendet wird. Wenn ich zum Beispiel versuche, meine eigene Antwort zu verbessern, enthält die AJAX-Antwort den anzuzeigenden Fehler:
{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.",
"Refresh":false}
Sie können auch einen anderen Ansatz wählen und die Fehler auf der HTML-Seite voreinstellen, bevor das Formular ausgefüllt wird. Vorteile: Sie müssen die Fehlermeldung nicht in der AJAX-Antwort senden. Nachteile: Wie steht es mit der Barrierefreiheit? Wenn Sie versuchen, die Seite ohne CSS zu durchsuchen, werden alle möglichen Fehler angezeigt.