1
00:00:00,180 --> 00:00:00,690
Bienvenidos.

2
00:00:00,750 --> 00:00:05,730
Vamos a ver un nuevo tema, una nueva sección dedicada al manejo de errores en sprint.

3
00:00:05,760 --> 00:00:07,860
Todos los detalles y todos los relacionados.

4
00:00:07,890 --> 00:00:12,870
Pero la idea es verlo de forma independiente, ver desde un proyecto, desde cero, sin mezclar con

5
00:00:12,870 --> 00:00:14,790
los demás ejemplos que teníamos en el curso.

6
00:00:14,880 --> 00:00:19,170
La idea de centrarnos solamente en el manejo de error con los casos más importantes.

7
00:00:19,470 --> 00:00:24,350
Entonces, como siempre, vamos a crear un proyecto con New Spring State Project.

8
00:00:24,570 --> 00:00:25,530
Le damos un nombre.

9
00:00:25,590 --> 00:00:27,510
Error Springwood error.

10
00:00:28,260 --> 00:00:31,080
Todo lo demás igual, excepto el package de Java.

11
00:00:31,110 --> 00:00:35,700
Cambiamos horario acá por error y todo lo demás igual.

12
00:00:36,390 --> 00:00:37,140
Siguiente.

13
00:00:37,230 --> 00:00:38,190
Y la dependencia?

14
00:00:38,430 --> 00:00:39,870
Bueno, acá tiene memoria.

15
00:00:39,960 --> 00:00:44,220
Es Printer Tools, Spring, Butt-Head, Tools, Spring, Web y Tamblin.

16
00:00:44,550 --> 00:00:48,190
Lo seleccionamos lo típico y finalizar bien.

17
00:00:48,270 --> 00:00:50,790
Bueno, estos errores también son típicos.

18
00:00:51,030 --> 00:00:54,780
Recuerden que con click derecho maven a project.

19
00:00:55,970 --> 00:01:00,770
Marcamos estos dos okei y se soluciona bien.

20
00:01:00,890 --> 00:01:01,930
Vamos a cerrar todo.

21
00:01:03,260 --> 00:01:05,390
Vamos a ir a error a Springwood.

22
00:01:05,570 --> 00:01:05,930
Error.

23
00:01:07,710 --> 00:01:09,000
Vamos a partir crean un paquete.

24
00:01:09,150 --> 00:01:15,570
Bueno, lo mismo de siempre, me van a disculpar por repetir también estos pasos, pero necesario para

25
00:01:15,570 --> 00:01:18,750
crear un controlador y también para probar el tema error.

26
00:01:18,870 --> 00:01:24,190
Y como explicaba, quería en un proyecto distinto y no utilizar los proyectos anteriores para no mezclar

27
00:01:24,190 --> 00:01:29,340
los conceptos y ver solamente el manejo de error en este proyecto con diferente caso, sin ensuciar

28
00:01:29,400 --> 00:01:30,360
los demás proyectos.

29
00:01:30,420 --> 00:01:36,960
Con este código de manejo error, por ejemplo un formulario no solamente en un proyecto distinto, independiente,

30
00:01:37,110 --> 00:01:42,330
aunque de todas formas se implementa, se pueden implementar en cualquier proyecto, en cualquiera.

31
00:01:42,600 --> 00:01:42,930
Bien.

32
00:01:44,020 --> 00:01:50,020
Vamos a crear también el controlador, el App Controller o el nombre que quieran.

33
00:01:50,110 --> 00:01:51,100
Porque a lo mismo.

34
00:01:52,020 --> 00:01:52,780
Anotamos.

35
00:01:55,260 --> 00:01:57,760
Importamos y método Andra.

36
00:02:00,570 --> 00:02:02,160
Por ejemplo, mapeados solamente a index.

37
00:02:02,190 --> 00:02:02,730
Nada más.

38
00:02:08,120 --> 00:02:08,950
Importaras.

39
00:02:13,150 --> 00:02:14,230
Se fijan y estamos listos.

40
00:02:14,260 --> 00:02:18,760
Rápidamente creamos el proyecto, creemos un controlador y retornamos ennombre la dicta la vista, no

41
00:02:18,760 --> 00:02:19,360
la tenemos.

42
00:02:19,500 --> 00:02:24,310
Bueno, y justamente acá me quiero detener, porque la vista en realidad no la vamos a crear.

43
00:02:24,400 --> 00:02:27,640
Un controlador con un método Handler, pero sí una vista.

44
00:02:27,670 --> 00:02:28,240
Qué pasa?

45
00:02:28,300 --> 00:02:29,050
Qué va a suceder?

46
00:02:29,140 --> 00:02:31,390
Bueno, obviamente va a lanzar un error.

47
00:02:31,960 --> 00:02:32,740
Levantamos.

48
00:02:35,360 --> 00:02:36,530
Guardamos el controlador.

49
00:02:36,650 --> 00:02:37,120
Ok.

50
00:02:42,510 --> 00:02:46,590
Se fijan un error de status 500 muy importante, error 500.

51
00:02:46,650 --> 00:02:50,070
Bueno, una serie cosa, pero lo más importante detectar el mensaje.

52
00:02:50,070 --> 00:02:56,930
El error error resolviendo template index no existe o no se puede acceder, no se puede leer en la configuración.

53
00:02:57,190 --> 00:03:04,320
Bueno, podemos manejar esta página por defecto, esta página que propone Springwood o página en blanco

54
00:03:04,380 --> 00:03:04,830
error.

55
00:03:04,890 --> 00:03:09,180
Y esto lo podemos personalizar, lo podemos hacer mucho más amistoso al usuario.

56
00:03:09,270 --> 00:03:14,700
Bueno, en realidad es bastante simple manejar una página por defecto, aunque tenemos la forma simple,

57
00:03:14,730 --> 00:03:17,550
pero también una forma un poco más customizado.

58
00:03:17,670 --> 00:03:22,620
Vamos a ver las dos, pero bien, por ahora vamos a quedar hasta acá y continuamos en la siguiente clase

59
00:03:22,710 --> 00:03:26,580
manejando el error 500 para cualquier tipo, 500 independiente.

60
00:03:26,580 --> 00:03:32,730
Si es un error de que no existe template a la vista, un error relacionado con un Ámber.

61
00:03:32,730 --> 00:03:39,390
Fórmate Septón, por ejemplo, si queremos convertir un string a un integer, pero el string no es numérico.

62
00:03:39,420 --> 00:03:43,980
Por ejemplo, es un texto lanza un number format deception, un error 500.

63
00:03:43,990 --> 00:03:49,440
También lo puedo manejar también en esta página personalizada o por ejemplo, si abrimos un número X

64
00:03:49,500 --> 00:03:50,580
por cero también.

65
00:03:50,640 --> 00:03:52,260
Finalmente es infinito.

66
00:03:52,350 --> 00:03:55,260
Lanza una excepción que no se puede dividir por cero también.

67
00:03:55,320 --> 00:03:56,160
Error 500.

68
00:03:56,280 --> 00:04:01,380
En general, cualquier lanzamiento excepción de Ranting va a generar este tipo de error 500 y lo podemos

69
00:04:01,380 --> 00:04:06,460
personalizar de forma global para cualquier tipo de error 500 o bien personalizar cada una de estas

70
00:04:06,480 --> 00:04:06,960
opciones.

71
00:04:07,140 --> 00:04:12,900
Es decir, que si ocurre una división por cero, tener su propia página por si ocurre un number forma,

72
00:04:12,930 --> 00:04:15,000
deception manejar esas opciones.

73
00:04:15,030 --> 00:04:19,590
Si ocurre un error relacionado a templates, lo mismo podemos manejar esta excepción.

74
00:04:19,650 --> 00:04:23,010
Template input exception está la excepción que está lanzando.

75
00:04:23,130 --> 00:04:28,110
Entonces, alguna forma podríamos tener un controlador especializado para manejo errores que captura

76
00:04:28,110 --> 00:04:33,960
esta sección y la muestra de forma independiente personalizada solamente para el error que no existe

77
00:04:33,960 --> 00:04:40,210
la vista, el template o errores relacionado con base dato de conexiones data access, exception, en

78
00:04:40,230 --> 00:04:46,050
fin, cualquier tipo error y también bueno, el clásico 404 también lo puedo manejar y también lo vamos

79
00:04:46,050 --> 00:04:48,510
a ver cuando no existe el recurso, no existe la página.

80
00:04:48,570 --> 00:04:50,700
Por ejemplo, si quiero acceder acá.

81
00:04:51,090 --> 00:04:52,070
Bueno, de hecho la raíz.

82
00:04:52,680 --> 00:04:56,700
Bueno, la raíz no está mapeado 404 se fijan, no existe.

83
00:04:57,480 --> 00:05:00,240
O por ejemplo clientes.

84
00:05:00,480 --> 00:05:03,030
La ruta cliente tampoco existe un 404.

85
00:05:03,090 --> 00:05:05,730
Podremos personalizar esta página para que sea mucho más amistosa.

86
00:05:05,820 --> 00:05:09,330
No sé, un mensaje que diga lo sentimos, esta página no existe.

87
00:05:09,540 --> 00:05:11,940
En fin, continuamos en la siguiente clase.
