﻿1
00:00:01,320 --> 00:00:03,670
‫Docente: Quindi, fino a questo punto del

2
00:00:03,670 --> 00:00:05,430
‫corso non abbiamo gestito gli

3
00:00:05,430 --> 00:00:09,420
‫errori in modo corretto o in una posizione centrale nella nostra applicazione.

4
00:00:09,420 --> 00:00:11,690
‫Quello che abbiamo fatto è stato semplicemente inviare

5
00:00:11,690 --> 00:00:15,180
‫un messaggio di errore come JSON in ogni gestore di route nel

6
00:00:15,180 --> 00:00:16,750
‫caso qualcosa fosse andato storto.

7
00:00:16,750 --> 00:00:17,760
‫Destra?

8
00:00:17,760 --> 00:00:21,250
‫Quindi questo è fondamentalmente ciò che sistemeremo in questa sezione.

9
00:00:21,250 --> 00:00:22,860
‫Ma per ora, prendiamoci un

10
00:00:22,860 --> 00:00:26,653
‫minuto per avere solo una breve panoramica della gestione degli errori in Express.

11
00:00:27,490 --> 00:00:29,700
‫E iniziamo distinguendo effettivamente tra

12
00:00:29,700 --> 00:00:32,550
‫due tipi di errori che possono verificarsi.

13
00:00:32,550 --> 00:00:35,660
‫Errori operativi ed errori di programmazione.

14
00:00:35,660 --> 00:00:38,060
‫Quindi, gli errori operativi sono problemi che

15
00:00:38,060 --> 00:00:40,760
‫possiamo prevedere che inevitabilmente si verificheranno ad un

16
00:00:40,760 --> 00:00:42,480
‫certo punto in futuro.

17
00:00:42,480 --> 00:00:45,500
‫E quindi dobbiamo solo gestirli in anticipo.

18
00:00:45,500 --> 00:00:48,430
‫Non hanno nulla a che fare con i bug nel nostro codice.

19
00:00:48,430 --> 00:00:51,760
‫Al contrario, dipendono dall'utente, dal sistema o

20
00:00:51,760 --> 00:00:53,050
‫dalla rete.

21
00:00:53,050 --> 00:00:57,320
‫Quindi, cose come un utente che accede a un percorso non

22
00:00:57,320 --> 00:01:01,430
‫valido, immette dati non validi o un'applicazione non riesce a

23
00:01:01,430 --> 00:01:02,870
‫connettersi al database.

24
00:01:02,870 --> 00:01:05,290
‫Tutti questi sono errori operativi

25
00:01:05,290 --> 00:01:06,920
‫che dovremo gestire

26
00:01:06,920 --> 00:01:10,440
‫per preparare la nostra applicazione per questi casi.

27
00:01:10,440 --> 00:01:12,590
‫Vedrai anche il termine "eccezione"

28
00:01:12,590 --> 00:01:14,680
‫utilizzato al posto di errore

29
00:01:14,680 --> 00:01:17,200
‫e sebbene siano concettualmente diversi, molte

30
00:01:17,200 --> 00:01:19,290
‫persone usano i termini

31
00:01:19,290 --> 00:01:21,670
‫errore ed eccezione in modo intercambiabile.

32
00:01:21,670 --> 00:01:23,370
‫E li chiamerò

33
00:01:23,370 --> 00:01:26,860
‫semplicemente "errori" anche in questo corso per evitare confusione.

34
00:01:26,860 --> 00:01:30,460
‫Comunque, d'altra parte, abbiamo errori di programmazione.

35
00:01:30,460 --> 00:01:32,800
‫Che sono semplicemente bug che noi

36
00:01:32,800 --> 00:01:34,810
‫sviluppatori introduciamo nel nostro codice.

37
00:01:34,810 --> 00:01:37,010
‫Come, ad esempio, provare a leggere

38
00:01:37,010 --> 00:01:41,220
‫le proprietà da una variabile indefinita, usare wait senza async, usare

39
00:01:41,220 --> 00:01:46,070
‫request per sbaglio. interrogazione invece di richiesta. corpo, o molti

40
00:01:46,070 --> 00:01:49,020
‫altri errori, in realtà, che potremmo fare.

41
00:01:49,020 --> 00:01:51,530
‫Allora, sai come funziona, vero?

42
00:01:51,530 --> 00:01:53,540
‫E sono davvero inevitabili

43
00:01:53,540 --> 00:01:56,810
‫ma anche più difficili da trovare e da maneggiare.

44
00:01:56,810 --> 00:01:59,720
‫Ok, quindi è importante che tu capisca

45
00:01:59,720 --> 00:02:02,480
‫questa differenza cruciale tra errori operativi ed

46
00:02:02,480 --> 00:02:04,230
‫errori di programmazione.

47
00:02:04,230 --> 00:02:07,330
‫Quindi, quando parliamo di gestione degli errori con

48
00:02:07,330 --> 00:02:09,930
‫Express, intendiamo principalmente solo errori operativi.

49
00:02:09,930 --> 00:02:11,890
‫Perché questi sono quelli

50
00:02:11,890 --> 00:02:15,650
‫facili da catturare e gestire con la nostra applicazione Express.

51
00:02:15,650 --> 00:02:18,070
‫Ed Express viene effettivamente fornito con la gestione

52
00:02:18,070 --> 00:02:19,390
‫degli errori pronta all'uso.

53
00:02:19,390 --> 00:02:21,160
‫Quindi, tutto ciò che

54
00:02:21,160 --> 00:02:24,010
‫dobbiamo fare è scrivere un middleware di gestione

55
00:02:24,010 --> 00:02:26,090
‫degli errori espresso globale che catturerà

56
00:02:26,090 --> 00:02:28,050
‫gli errori provenienti da tutta l'applicazione.

57
00:02:28,050 --> 00:02:31,260
‫Quindi, non importa se si tratta di un errore proveniente da

58
00:02:31,260 --> 00:02:34,950
‫un gestore di route, o da un validatore di modelli o davvero, da qualche

59
00:02:34,950 --> 00:02:37,240
‫altra parte, l'obiettivo è che tutti questi

60
00:02:37,240 --> 00:02:39,920
‫errori finiscano in un middleware centrale di gestione degli errori.

61
00:02:39,920 --> 00:02:43,610
‫In modo che possiamo inviare una bella risposta al cliente

62
00:02:43,610 --> 00:02:45,510
‫facendogli sapere cosa è successo.

63
00:02:45,510 --> 00:02:48,340
‫E quindi, davvero, gestire in questo caso significa

64
00:02:48,340 --> 00:02:52,040
‫semplicemente inviare una risposta per far sapere all'utente cosa è successo.

65
00:02:52,040 --> 00:02:55,050
‫Ma la gestione può anche significare, in

66
00:02:55,050 --> 00:02:58,220
‫altri casi, riprovare l'operazione o arrestare il server,

67
00:02:58,220 --> 00:03:00,960
‫o semplicemente ignorare del tutto l'errore.

68
00:03:00,960 --> 00:03:03,980
‫A volte, questa è solo l'opzione migliore.

69
00:03:03,980 --> 00:03:07,470
‫Ora la bellezza di avere un middleware di gestione degli errori

70
00:03:07,470 --> 00:03:10,830
‫globale è che consente una buona separazione delle preoccupazioni.

71
00:03:10,830 --> 00:03:13,170
‫Quindi, non dobbiamo preoccuparci della gestione

72
00:03:13,170 --> 00:03:16,220
‫degli errori direttamente nella nostra logica di business o nei

73
00:03:16,220 --> 00:03:18,750
‫nostri controller, o davvero ovunque nella nostra applicazione.

74
00:03:18,750 --> 00:03:22,090
‫Possiamo semplicemente inviare gli errori al gestore degli

75
00:03:22,090 --> 00:03:25,090
‫errori che deciderà cosa farne successivamente.

76
00:03:25,090 --> 00:03:26,340
‫Tutto ok?

77
00:03:26,340 --> 00:03:28,170
‫Quindi, con tutto ciò

78
00:03:28,170 --> 00:03:30,463
‫che è stato detto, iniziamo a implementarlo.

