﻿1
00:00:01,320 --> 00:00:03,670
‫Instructor: Entonces, hasta este punto del curso,

2
00:00:03,670 --> 00:00:05,430
‫realmente no hemos manejado los

3
00:00:05,430 --> 00:00:09,420
‫errores de una buena manera o en un lugar central en nuestra aplicación.

4
00:00:09,420 --> 00:00:11,690
‫Lo que hicimos fue simplemente enviar un mensaje

5
00:00:11,690 --> 00:00:15,180
‫de error como JSON en cada controlador de ruta en caso de

6
00:00:15,180 --> 00:00:16,750
‫que algo saliera mal.

7
00:00:16,750 --> 00:00:17,760
‫¿Derecha?

8
00:00:17,760 --> 00:00:21,250
‫Eso es básicamente lo que vamos a arreglar en esta sección.

9
00:00:21,250 --> 00:00:22,860
‫Pero por ahora, tomemos un

10
00:00:22,860 --> 00:00:26,653
‫minuto para obtener una breve descripción general del manejo de errores en Express.

11
00:00:27,490 --> 00:00:29,700
‫Y comenzamos por distinguir entre

12
00:00:29,700 --> 00:00:32,550
‫dos tipos de errores que pueden ocurrir.

13
00:00:32,550 --> 00:00:35,660
‫Errores operacionales y errores de programación.

14
00:00:35,660 --> 00:00:38,060
‫Por lo tanto, los errores operativos son

15
00:00:38,060 --> 00:00:40,760
‫problemas que podemos predecir que inevitablemente sucederán en

16
00:00:40,760 --> 00:00:42,480
‫algún momento en el futuro.

17
00:00:42,480 --> 00:00:45,500
‫Así que solo tenemos que manejarlos con anticipación.

18
00:00:45,500 --> 00:00:48,430
‫No tienen nada que ver con errores en nuestro código.

19
00:00:48,430 --> 00:00:51,760
‫En cambio, dependen del usuario, del sistema o

20
00:00:51,760 --> 00:00:53,050
‫de la red.

21
00:00:53,050 --> 00:00:57,320
‫Entonces, cosas como que un usuario acceda a una ruta no válida, ingrese

22
00:00:57,320 --> 00:01:01,430
‫datos no válidos o una aplicación que no se conecte a la

23
00:01:01,430 --> 00:01:02,870
‫base de datos.

24
00:01:02,870 --> 00:01:05,290
‫Todos estos son errores operativos

25
00:01:05,290 --> 00:01:06,920
‫que tendremos que

26
00:01:06,920 --> 00:01:10,440
‫manejar para preparar nuestra aplicación para estos casos.

27
00:01:10,440 --> 00:01:12,590
‫También verá que se usa el

28
00:01:12,590 --> 00:01:14,680
‫término "excepción" en lugar de

29
00:01:14,680 --> 00:01:17,200
‫error y, aunque son conceptualmente diferentes, muchas

30
00:01:17,200 --> 00:01:19,290
‫personas usan los términos

31
00:01:19,290 --> 00:01:21,670
‫error y excepción de manera intercambiable.

32
00:01:21,670 --> 00:01:23,370
‫Y también los

33
00:01:23,370 --> 00:01:26,860
‫llamaré "errores" en este curso para evitar confusiones.

34
00:01:26,860 --> 00:01:30,460
‫De todos modos, por otro lado, tenemos errores de programación.

35
00:01:30,460 --> 00:01:32,800
‫Que son simplemente errores que los

36
00:01:32,800 --> 00:01:34,810
‫desarrolladores introducimos en nuestro código.

37
00:01:34,810 --> 00:01:37,010
‫Como, por ejemplo, intentar leer

38
00:01:37,010 --> 00:01:41,220
‫propiedades de una variable indefinida, usar await sin async,

39
00:01:41,220 --> 00:01:46,070
‫usar request accidentalmente. consulta en lugar de solicitud. cuerpo, o muchos

40
00:01:46,070 --> 00:01:49,020
‫otros errores, en realidad, que podríamos cometer.

41
00:01:49,020 --> 00:01:51,530
‫Entonces, sabes cómo funciona, ¿verdad?

42
00:01:51,530 --> 00:01:53,540
‫Y son realmente inevitables,

43
00:01:53,540 --> 00:01:56,810
‫pero también más difíciles de encontrar y manejar.

44
00:01:56,810 --> 00:01:59,720
‫Bien, entonces, es importante que comprenda esta

45
00:01:59,720 --> 00:02:02,480
‫diferencia crucial entre errores operativos y

46
00:02:02,480 --> 00:02:04,230
‫errores de programación.

47
00:02:04,230 --> 00:02:07,330
‫Entonces, cuando hablamos de manejo de errores con Express,

48
00:02:07,330 --> 00:02:09,930
‫nos referimos principalmente a errores operativos.

49
00:02:09,930 --> 00:02:11,890
‫Porque estos son los que

50
00:02:11,890 --> 00:02:15,650
‫son fáciles de atrapar y manejar con nuestra aplicación Express.

51
00:02:15,650 --> 00:02:18,070
‫Y Express realmente viene con manejo de errores

52
00:02:18,070 --> 00:02:19,390
‫listo para usar.

53
00:02:19,390 --> 00:02:21,160
‫Entonces, todo lo que tenemos

54
00:02:21,160 --> 00:02:24,010
‫que hacer es escribir un middleware de manejo de

55
00:02:24,010 --> 00:02:26,090
‫errores expreso global que luego detectará los

56
00:02:26,090 --> 00:02:28,050
‫errores provenientes de toda la aplicación.

57
00:02:28,050 --> 00:02:31,260
‫Entonces, no importa si se trata de un error proveniente de

58
00:02:31,260 --> 00:02:34,950
‫un controlador de ruta, o un validador de modelos o realmente, de algún otro

59
00:02:34,950 --> 00:02:37,240
‫lugar, el objetivo es que todos estos

60
00:02:37,240 --> 00:02:39,920
‫errores terminen en un middleware de manejo de errores central.

61
00:02:39,920 --> 00:02:43,610
‫Para que podamos enviar una buena respuesta al cliente

62
00:02:43,610 --> 00:02:45,510
‫informándole lo que sucedió.

63
00:02:45,510 --> 00:02:48,340
‫Entonces, realmente, manejar en este caso solo significa

64
00:02:48,340 --> 00:02:52,040
‫enviar una respuesta para que el usuario sepa lo que sucedió.

65
00:02:52,040 --> 00:02:55,050
‫Pero el manejo también puede significar, en otros casos,

66
00:02:55,050 --> 00:02:58,220
‫volver a intentar la operación o bloquear el servidor,

67
00:02:58,220 --> 00:03:00,960
‫o simplemente ignorar el error por completo.

68
00:03:00,960 --> 00:03:03,980
‫A veces, esa es la mejor opción.

69
00:03:03,980 --> 00:03:07,470
‫Ahora, la belleza de tener un middleware de manejo de errores

70
00:03:07,470 --> 00:03:10,830
‫global es que permite una buena separación de preocupaciones.

71
00:03:10,830 --> 00:03:13,170
‫Por lo tanto, no tenemos que preocuparnos por

72
00:03:13,170 --> 00:03:16,220
‫el manejo de errores directamente en nuestra lógica comercial o nuestros

73
00:03:16,220 --> 00:03:18,750
‫controladores, o realmente en cualquier parte de nuestra aplicación.

74
00:03:18,750 --> 00:03:22,090
‫Simplemente podemos enviar los errores al controlador de errores que

75
00:03:22,090 --> 00:03:25,090
‫luego decidirá qué hacer con ellos a continuación.

76
00:03:25,090 --> 00:03:26,340
‫¿Está bien?

77
00:03:26,340 --> 00:03:28,170
‫Entonces, con todo lo

78
00:03:28,170 --> 00:03:30,463
‫dicho, comencemos ahora a implementar esto.

