﻿1
00:00:01,320 --> 00:00:03,670
‫Instrutor: Então, até este ponto do curso,

2
00:00:03,670 --> 00:00:05,430
‫não tratamos os erros

3
00:00:05,430 --> 00:00:09,420
‫de maneira adequada ou em um local central em nossa aplicação.

4
00:00:09,420 --> 00:00:11,690
‫O que fizemos foi simplesmente enviar de volta

5
00:00:11,690 --> 00:00:15,180
‫uma mensagem de erro como JSON em cada gerenciador de rota,

6
00:00:15,180 --> 00:00:16,750
‫caso algo desse errado.

7
00:00:16,750 --> 00:00:17,760
‫Direito?

8
00:00:17,760 --> 00:00:21,250
‫Então, é basicamente isso que vamos corrigir nesta seção.

9
00:00:21,250 --> 00:00:22,860
‫Mas, por enquanto, vamos dedicar

10
00:00:22,860 --> 00:00:26,653
‫um minuto apenas para obter uma breve visão geral do tratamento de erros no Express.

11
00:00:27,490 --> 00:00:29,700
‫E começamos realmente distinguindo entre

12
00:00:29,700 --> 00:00:32,550
‫dois tipos de erros que podem ocorrer.

13
00:00:32,550 --> 00:00:35,660
‫Erros operacionais e erros de programação.

14
00:00:35,660 --> 00:00:38,060
‫Portanto, erros operacionais são problemas que

15
00:00:38,060 --> 00:00:40,760
‫podemos prever que acontecerão inevitavelmente em algum

16
00:00:40,760 --> 00:00:42,480
‫momento no futuro.

17
00:00:42,480 --> 00:00:45,500
‫E então só precisamos lidar com eles com antecedência.

18
00:00:45,500 --> 00:00:48,430
‫Eles não têm nada a ver com bugs em nosso código.

19
00:00:48,430 --> 00:00:51,760
‫Em vez disso, eles dependem do usuário, do sistema

20
00:00:51,760 --> 00:00:53,050
‫ou da rede.

21
00:00:53,050 --> 00:00:57,320
‫Portanto, coisas como um usuário acessando uma rota inválida, inserindo dados

22
00:00:57,320 --> 00:01:01,430
‫inválidos ou um aplicativo falhando ao se conectar ao

23
00:01:01,430 --> 00:01:02,870
‫banco de dados.

24
00:01:02,870 --> 00:01:05,290
‫Todos esses são erros operacionais que

25
00:01:05,290 --> 00:01:06,920
‫teremos de tratar

26
00:01:06,920 --> 00:01:10,440
‫a fim de preparar nossa aplicação para esses casos.

27
00:01:10,440 --> 00:01:12,590
‫Você também verá o termo "exceção"

28
00:01:12,590 --> 00:01:14,680
‫sendo usado em vez de

29
00:01:14,680 --> 00:01:17,200
‫erro e, embora sejam conceitualmente diferentes, muitas

30
00:01:17,200 --> 00:01:19,290
‫pessoas usam os termos

31
00:01:19,290 --> 00:01:21,670
‫erro e exceção de forma intercambiável.

32
00:01:21,670 --> 00:01:23,370
‫E vou chamá-los

33
00:01:23,370 --> 00:01:26,860
‫de "erros" neste curso também para evitar confusão.

34
00:01:26,860 --> 00:01:30,460
‫De qualquer forma, temos erros de programação.

35
00:01:30,460 --> 00:01:32,800
‫Que são simplesmente bugs que nós,

36
00:01:32,800 --> 00:01:34,810
‫desenvolvedores, introduzimos em nosso código.

37
00:01:34,810 --> 00:01:37,010
‫Como, por exemplo, tentar ler

38
00:01:37,010 --> 00:01:41,220
‫propriedades de uma variável indefinida, usando await sem async,

39
00:01:41,220 --> 00:01:46,070
‫acidentalmente usando request. consulta em vez de solicitação. corpo, ou muitos

40
00:01:46,070 --> 00:01:49,020
‫outros erros, realmente, que possamos cometer.

41
00:01:49,020 --> 00:01:51,530
‫Então, você sabe como funciona, certo?

42
00:01:51,530 --> 00:01:53,540
‫E eles são realmente

43
00:01:53,540 --> 00:01:56,810
‫inevitáveis, mas também mais difíceis de encontrar e manusear.

44
00:01:56,810 --> 00:01:59,720
‫Ok, então, é importante que você entenda

45
00:01:59,720 --> 00:02:02,480
‫essa diferença crucial entre erros operacionais e

46
00:02:02,480 --> 00:02:04,230
‫erros de programação.

47
00:02:04,230 --> 00:02:07,330
‫Portanto, quando falamos sobre tratamento de erros com o

48
00:02:07,330 --> 00:02:09,930
‫Express, queremos dizer principalmente apenas erros operacionais.

49
00:02:09,930 --> 00:02:11,890
‫Porque esses são os que

50
00:02:11,890 --> 00:02:15,650
‫são fáceis de capturar e manipular com nosso aplicativo Express.

51
00:02:15,650 --> 00:02:18,070
‫E o Express, na verdade, vem com tratamento de

52
00:02:18,070 --> 00:02:19,390
‫erros pronto para uso.

53
00:02:19,390 --> 00:02:21,160
‫Portanto, tudo o que temos

54
00:02:21,160 --> 00:02:24,010
‫a fazer é escrever um middleware global expresso de

55
00:02:24,010 --> 00:02:26,090
‫tratamento de erros que, então, detectará os

56
00:02:26,090 --> 00:02:28,050
‫erros provenientes de todo o aplicativo.

57
00:02:28,050 --> 00:02:31,260
‫Então, não importa se é um erro vindo de um manipulador

58
00:02:31,260 --> 00:02:34,950
‫de rota, ou um validador de modelo ou realmente, em algum outro lugar,

59
00:02:34,950 --> 00:02:37,240
‫o objetivo é que todos esses erros

60
00:02:37,240 --> 00:02:39,920
‫terminem em um middleware de gerenciamento de erros central.

61
00:02:39,920 --> 00:02:43,610
‫Para que possamos enviar uma boa resposta ao cliente,

62
00:02:43,610 --> 00:02:45,510
‫informando-o do que aconteceu.

63
00:02:45,510 --> 00:02:48,340
‫E então, realmente, lidar com este caso significa

64
00:02:48,340 --> 00:02:52,040
‫apenas enviar uma resposta permitindo ao usuário saber o que aconteceu.

65
00:02:52,040 --> 00:02:55,050
‫Mas o manuseio também pode significar, em outros

66
00:02:55,050 --> 00:02:58,220
‫casos, repetir a operação ou travar o servidor, ou

67
00:02:58,220 --> 00:03:00,960
‫simplesmente ignorar o erro por completo.

68
00:03:00,960 --> 00:03:03,980
‫Às vezes, essa é a melhor opção.

69
00:03:03,980 --> 00:03:07,470
‫Agora, a beleza de ter um middleware global de tratamento de

70
00:03:07,470 --> 00:03:10,830
‫erros é que ele permite uma boa separação de interesses.

71
00:03:10,830 --> 00:03:13,170
‫Portanto, não precisamos nos preocupar com o

72
00:03:13,170 --> 00:03:16,220
‫tratamento de erros diretamente em nossa lógica de negócios ou em

73
00:03:16,220 --> 00:03:18,750
‫nossos controladores, ou em qualquer lugar de nossa aplicação.

74
00:03:18,750 --> 00:03:22,090
‫Podemos simplesmente enviar os erros para o manipulador de erros, que

75
00:03:22,090 --> 00:03:25,090
‫decidirá o que fazer com eles a seguir.

76
00:03:25,090 --> 00:03:26,340
‫Tudo bem?

77
00:03:26,340 --> 00:03:28,170
‫Então, com tudo o que

78
00:03:28,170 --> 00:03:30,463
‫foi dito, vamos começar a implementar isso.

