‫Dozent: Also, bis zu diesem Punkt im
‫Kurs haben wir Fehler
‫nicht wirklich gut oder an einer zentralen Stelle in unserer Anwendung behandelt.
‫Wir haben einfach eine Fehlermeldung
‫als JSON in jedem Route-Handler zurückgesendet, falls etwas
‫schief gelaufen ist.
‫Rechts?
‫Das ist im Grunde das, was wir in diesem Abschnitt beheben werden.
‫Aber nehmen wir
‫uns vorerst einen kurzen Überblick über die Fehlerbehandlung in Express.
‫Und wir beginnen damit, dass wir
‫tatsächlich zwischen zwei Arten von Fehlern unterscheiden, die auftreten können.
‫Bedienungsfehler und Programmierfehler.
‫Betriebsfehler sind also Probleme, von denen
‫wir vorhersagen können, dass sie irgendwann in der
‫Zukunft unweigerlich auftreten werden.
‫Und so müssen wir sie nur im Voraus behandeln.
‫Sie haben nichts mit Fehlern in unserem Code zu tun.
‫Stattdessen hängen sie vom Benutzer, dem System oder
‫dem Netzwerk ab.
‫Also Dinge wie ein Benutzer, der auf eine ungültige Route zugreift,
‫ungültige Daten eingibt oder eine Anwendung keine Verbindung zur
‫Datenbank herstellen kann.
‫All dies sind Betriebsfehler, die
‫wir behandeln müssen,
‫um unseren Antrag für diese Fälle vorzubereiten.
‫Sie werden auch sehen, dass der
‫Begriff "Ausnahme" anstelle von Fehler
‫verwendet wird, und obwohl sie konzeptionell unterschiedlich
‫sind, verwenden viele Leute
‫die Begriffe Fehler und Ausnahme synonym.
‫Und ich werde sie
‫auch in diesem Kurs nur "Fehler" nennen, um Verwirrung zu vermeiden.
‫Auf der anderen Seite haben wir jedenfalls Programmierfehler.
‫Das sind einfach Fehler, die wir
‫Entwickler in unseren Code einführen.
‫Wie zum Beispiel beim Versuch, Eigenschaften
‫aus einer undefinierten Variablen zu lesen, mit await ohne async,
‫versehentlich mit request. fragen statt anfordern. Körper, oder viele
‫andere Fehler, die wir machen könnten.
‫Sie wissen also, wie es funktioniert, oder?
‫Und sie sind wirklich
‫unvermeidlich, aber auch schwieriger zu finden und zu handhaben.
‫Okay, es ist also wichtig, dass
‫Sie diesen entscheidenden Unterschied zwischen Bedienungsfehlern
‫und Programmierfehlern verstehen.
‫Wenn wir also über die Fehlerbehandlung mit Express
‫sprechen, meinen wir hauptsächlich nur Betriebsfehler.
‫Denn diese sind mit
‫unserer Express-Anwendung leicht zu fangen und zu handhaben.
‫Und Express kommt tatsächlich mit Fehlerbehandlung
‫aus der Box.
‫Wir müssen also
‫nur eine globale Express-Middleware zur Fehlerbehandlung
‫schreiben, die dann Fehler aus
‫der gesamten Anwendung abfängt.
‫Egal, ob es sich um einen Fehler von
‫einem Route-Handler, einem Modellvalidator oder wirklich anderswo handelt, das
‫Ziel ist, dass alle diese
‫Fehler in einer zentralen Fehlerbehandlungs-Middleware landen.
‫Damit wir eine nette Antwort an den Kunden zurücksenden können und ihn
‫wissen lassen, was passiert ist.
‫In diesem Fall bedeutet die Handhabung also nur
‫das Senden einer Antwort, die den Benutzer darüber informiert, was passiert ist.
‫Aber die Handhabung kann in anderen Fällen auch bedeuten,
‫den Vorgang erneut zu versuchen, den Server zum Absturz zu
‫bringen oder den Fehler einfach ganz zu ignorieren.
‫Manchmal ist das einfach die beste Option.
‫Das Schöne an einer globalen Middleware zur Fehlerbehandlung besteht darin,
‫dass sie eine schöne Trennung der Bedenken ermöglicht.
‫Wir müssen uns also nicht um
‫die Fehlerbehandlung direkt in unserer Geschäftslogik oder unseren Controllern
‫oder wirklich irgendwo in unserer Anwendung kümmern.
‫Wir können die Fehler einfach an den Fehlerhandler senden, der dann
‫entscheidet, was als nächstes mit ihnen zu tun ist.
‫Gut?
‫Also, nach allem, was gesagt wurde,
‫lassen Sie uns jetzt tatsächlich mit der Umsetzung beginnen.