﻿1
00:00:01,320 --> 00:00:03,670
‫Dozent: Also, bis zu diesem Punkt im

2
00:00:03,670 --> 00:00:05,430
‫Kurs haben wir Fehler

3
00:00:05,430 --> 00:00:09,420
‫nicht wirklich gut oder an einer zentralen Stelle in unserer Anwendung behandelt.

4
00:00:09,420 --> 00:00:11,690
‫Wir haben einfach eine Fehlermeldung

5
00:00:11,690 --> 00:00:15,180
‫als JSON in jedem Route-Handler zurückgesendet, falls etwas

6
00:00:15,180 --> 00:00:16,750
‫schief gelaufen ist.

7
00:00:16,750 --> 00:00:17,760
‫Rechts?

8
00:00:17,760 --> 00:00:21,250
‫Das ist im Grunde das, was wir in diesem Abschnitt beheben werden.

9
00:00:21,250 --> 00:00:22,860
‫Aber nehmen wir

10
00:00:22,860 --> 00:00:26,653
‫uns vorerst einen kurzen Überblick über die Fehlerbehandlung in Express.

11
00:00:27,490 --> 00:00:29,700
‫Und wir beginnen damit, dass wir

12
00:00:29,700 --> 00:00:32,550
‫tatsächlich zwischen zwei Arten von Fehlern unterscheiden, die auftreten können.

13
00:00:32,550 --> 00:00:35,660
‫Bedienungsfehler und Programmierfehler.

14
00:00:35,660 --> 00:00:38,060
‫Betriebsfehler sind also Probleme, von denen

15
00:00:38,060 --> 00:00:40,760
‫wir vorhersagen können, dass sie irgendwann in der

16
00:00:40,760 --> 00:00:42,480
‫Zukunft unweigerlich auftreten werden.

17
00:00:42,480 --> 00:00:45,500
‫Und so müssen wir sie nur im Voraus behandeln.

18
00:00:45,500 --> 00:00:48,430
‫Sie haben nichts mit Fehlern in unserem Code zu tun.

19
00:00:48,430 --> 00:00:51,760
‫Stattdessen hängen sie vom Benutzer, dem System oder

20
00:00:51,760 --> 00:00:53,050
‫dem Netzwerk ab.

21
00:00:53,050 --> 00:00:57,320
‫Also Dinge wie ein Benutzer, der auf eine ungültige Route zugreift,

22
00:00:57,320 --> 00:01:01,430
‫ungültige Daten eingibt oder eine Anwendung keine Verbindung zur

23
00:01:01,430 --> 00:01:02,870
‫Datenbank herstellen kann.

24
00:01:02,870 --> 00:01:05,290
‫All dies sind Betriebsfehler, die

25
00:01:05,290 --> 00:01:06,920
‫wir behandeln müssen,

26
00:01:06,920 --> 00:01:10,440
‫um unseren Antrag für diese Fälle vorzubereiten.

27
00:01:10,440 --> 00:01:12,590
‫Sie werden auch sehen, dass der

28
00:01:12,590 --> 00:01:14,680
‫Begriff "Ausnahme" anstelle von Fehler

29
00:01:14,680 --> 00:01:17,200
‫verwendet wird, und obwohl sie konzeptionell unterschiedlich

30
00:01:17,200 --> 00:01:19,290
‫sind, verwenden viele Leute

31
00:01:19,290 --> 00:01:21,670
‫die Begriffe Fehler und Ausnahme synonym.

32
00:01:21,670 --> 00:01:23,370
‫Und ich werde sie

33
00:01:23,370 --> 00:01:26,860
‫auch in diesem Kurs nur "Fehler" nennen, um Verwirrung zu vermeiden.

34
00:01:26,860 --> 00:01:30,460
‫Auf der anderen Seite haben wir jedenfalls Programmierfehler.

35
00:01:30,460 --> 00:01:32,800
‫Das sind einfach Fehler, die wir

36
00:01:32,800 --> 00:01:34,810
‫Entwickler in unseren Code einführen.

37
00:01:34,810 --> 00:01:37,010
‫Wie zum Beispiel beim Versuch, Eigenschaften

38
00:01:37,010 --> 00:01:41,220
‫aus einer undefinierten Variablen zu lesen, mit await ohne async,

39
00:01:41,220 --> 00:01:46,070
‫versehentlich mit request. fragen statt anfordern. Körper, oder viele

40
00:01:46,070 --> 00:01:49,020
‫andere Fehler, die wir machen könnten.

41
00:01:49,020 --> 00:01:51,530
‫Sie wissen also, wie es funktioniert, oder?

42
00:01:51,530 --> 00:01:53,540
‫Und sie sind wirklich

43
00:01:53,540 --> 00:01:56,810
‫unvermeidlich, aber auch schwieriger zu finden und zu handhaben.

44
00:01:56,810 --> 00:01:59,720
‫Okay, es ist also wichtig, dass

45
00:01:59,720 --> 00:02:02,480
‫Sie diesen entscheidenden Unterschied zwischen Bedienungsfehlern

46
00:02:02,480 --> 00:02:04,230
‫und Programmierfehlern verstehen.

47
00:02:04,230 --> 00:02:07,330
‫Wenn wir also über die Fehlerbehandlung mit Express

48
00:02:07,330 --> 00:02:09,930
‫sprechen, meinen wir hauptsächlich nur Betriebsfehler.

49
00:02:09,930 --> 00:02:11,890
‫Denn diese sind mit

50
00:02:11,890 --> 00:02:15,650
‫unserer Express-Anwendung leicht zu fangen und zu handhaben.

51
00:02:15,650 --> 00:02:18,070
‫Und Express kommt tatsächlich mit Fehlerbehandlung

52
00:02:18,070 --> 00:02:19,390
‫aus der Box.

53
00:02:19,390 --> 00:02:21,160
‫Wir müssen also

54
00:02:21,160 --> 00:02:24,010
‫nur eine globale Express-Middleware zur Fehlerbehandlung

55
00:02:24,010 --> 00:02:26,090
‫schreiben, die dann Fehler aus

56
00:02:26,090 --> 00:02:28,050
‫der gesamten Anwendung abfängt.

57
00:02:28,050 --> 00:02:31,260
‫Egal, ob es sich um einen Fehler von

58
00:02:31,260 --> 00:02:34,950
‫einem Route-Handler, einem Modellvalidator oder wirklich anderswo handelt, das

59
00:02:34,950 --> 00:02:37,240
‫Ziel ist, dass alle diese

60
00:02:37,240 --> 00:02:39,920
‫Fehler in einer zentralen Fehlerbehandlungs-Middleware landen.

61
00:02:39,920 --> 00:02:43,610
‫Damit wir eine nette Antwort an den Kunden zurücksenden können und ihn

62
00:02:43,610 --> 00:02:45,510
‫wissen lassen, was passiert ist.

63
00:02:45,510 --> 00:02:48,340
‫In diesem Fall bedeutet die Handhabung also nur

64
00:02:48,340 --> 00:02:52,040
‫das Senden einer Antwort, die den Benutzer darüber informiert, was passiert ist.

65
00:02:52,040 --> 00:02:55,050
‫Aber die Handhabung kann in anderen Fällen auch bedeuten,

66
00:02:55,050 --> 00:02:58,220
‫den Vorgang erneut zu versuchen, den Server zum Absturz zu

67
00:02:58,220 --> 00:03:00,960
‫bringen oder den Fehler einfach ganz zu ignorieren.

68
00:03:00,960 --> 00:03:03,980
‫Manchmal ist das einfach die beste Option.

69
00:03:03,980 --> 00:03:07,470
‫Das Schöne an einer globalen Middleware zur Fehlerbehandlung besteht darin,

70
00:03:07,470 --> 00:03:10,830
‫dass sie eine schöne Trennung der Bedenken ermöglicht.

71
00:03:10,830 --> 00:03:13,170
‫Wir müssen uns also nicht um

72
00:03:13,170 --> 00:03:16,220
‫die Fehlerbehandlung direkt in unserer Geschäftslogik oder unseren Controllern

73
00:03:16,220 --> 00:03:18,750
‫oder wirklich irgendwo in unserer Anwendung kümmern.

74
00:03:18,750 --> 00:03:22,090
‫Wir können die Fehler einfach an den Fehlerhandler senden, der dann

75
00:03:22,090 --> 00:03:25,090
‫entscheidet, was als nächstes mit ihnen zu tun ist.

76
00:03:25,090 --> 00:03:26,340
‫Gut?

77
00:03:26,340 --> 00:03:28,170
‫Also, nach allem, was gesagt wurde,

78
00:03:28,170 --> 00:03:30,463
‫lassen Sie uns jetzt tatsächlich mit der Umsetzung beginnen.

