1
00:00:00,150 --> 00:00:00,660
Bienvenidos.

2
00:00:00,690 --> 00:00:05,340
Continuamos con una nueva sección, con ejemplos de manejo, excepciones de errores.

3
00:00:05,470 --> 00:00:08,670
Bueno, pero algo hemos visto, hemos trabajado con excepciones.

4
00:00:08,730 --> 00:00:14,400
Por ahí hemos utilizado un trait catch, pero la idea es profundizar un poco más este tema, aterrizarlo

5
00:00:14,400 --> 00:00:15,030
conceptos.

6
00:00:15,150 --> 00:00:18,750
Así que bueno, vamos a cerrar todo, como siempre, se todo.

7
00:00:18,770 --> 00:00:20,340
Cerramos también el proyecto.

8
00:00:20,400 --> 00:00:21,960
Íbamos a crear uno nuevo.

9
00:00:22,800 --> 00:00:23,790
Nuevo proyecto.

10
00:00:25,040 --> 00:00:33,290
Siguiente siguiente el nombre, por ejemplo, o excepciones de excepciones.

11
00:00:33,800 --> 00:00:35,630
Siguiente perfecto.

12
00:00:35,720 --> 00:00:36,380
Acá lo tenemos.

13
00:00:36,830 --> 00:00:38,030
Vamos a crear nuestro package.

14
00:00:38,210 --> 00:00:39,050
En ese arrasé.

15
00:00:42,230 --> 00:00:44,980
P o excepciones.

16
00:00:48,490 --> 00:00:48,760
Punto.

17
00:00:48,760 --> 00:00:50,250
Ejemplo Bien.

18
00:00:50,620 --> 00:00:52,550
Una clase con el método Main.

19
00:00:52,760 --> 00:00:57,010
Alguien crea una clase en vez de un pacato, pero incluyendo el РАМКАХ, pero la voy a renombrar.

20
00:00:57,460 --> 00:00:59,020
También vamos a renombrar el pacato.

21
00:00:59,680 --> 00:01:00,610
Por ejemplo, acá.

22
00:01:00,730 --> 00:01:03,300
Refractor Rainey.

23
00:01:03,970 --> 00:01:04,570
Acá.

24
00:01:04,720 --> 00:01:05,260
Punto.

25
00:01:05,380 --> 00:01:06,100
Ejemplo.

26
00:01:06,280 --> 00:01:08,400
Qué era lo que quería o qué?

27
00:01:08,530 --> 00:01:09,550
Y lo nombramos en la clase.

28
00:01:10,150 --> 00:01:10,480
Entonces.

29
00:01:10,480 --> 00:01:11,290
Refractor.

30
00:01:13,000 --> 00:01:13,750
Ejemplo

31
00:01:17,290 --> 00:01:20,850
excepciones refractor bien método main

32
00:01:23,740 --> 00:01:28,210
y comenzamos había mencionado la clase anterior que hay dos tipos principales que son las chiquilladas

33
00:01:28,330 --> 00:01:34,180
o checked y las han chequeado la sanches, que es cuando no nos obliga a manejar el error, ya sea con

34
00:01:34,180 --> 00:01:40,270
un trait catch o bien declarar este lanzamiento escepción en el método con la sentencia con la cláusula

35
00:01:40,390 --> 00:01:40,830
frus.

36
00:01:40,960 --> 00:01:45,790
Un ejemplo típico si queremos ir por cero, entonces vamos a tener un entero, le vamos a llamar división

37
00:01:46,900 --> 00:01:52,880
igual 10 dividido será para el ejemplo shout división.

38
00:01:54,400 --> 00:01:54,770
Perfecto.

39
00:01:54,790 --> 00:01:58,390
Si ejecutamos esto, se rompe la aplicación, se termina la ejecución.

40
00:01:58,900 --> 00:02:01,720
Por lo tanto se interrumpe, se fijan.

41
00:02:01,810 --> 00:02:09,760
Lanzo un error un aritméticos exception dividido por cero de forma automática y todo lo que siga en

42
00:02:09,760 --> 00:02:10,450
nuestro código.

43
00:02:10,480 --> 00:02:16,750
Por ejemplo, imprimir el resultado o qué cosa no sea ejecutar porque llega a tal error nomás después

44
00:02:16,750 --> 00:02:17,340
no continúa.

45
00:02:17,500 --> 00:02:21,910
Pero esto se puede cambiar, se puede manejar con un traje catch manejar este error de tal forma que

46
00:02:21,910 --> 00:02:27,250
podemos continuar con la ejecución y realizar otras tareas, o bien solucionar este problema o notificar

47
00:02:27,250 --> 00:02:28,610
al usuario con un mensaje de error.

48
00:02:28,660 --> 00:02:32,830
En fin, para eso utilizamos en el código que podría lanzar la excepción.

49
00:02:33,160 --> 00:02:34,570
Implementamos el try.

50
00:02:34,960 --> 00:02:39,610
Entonces trae las llaves y estas llaves envuelven nuestro código.

51
00:02:39,970 --> 00:02:41,830
Acá se fija, lo envuelven.

52
00:02:42,070 --> 00:02:47,010
Acá es el ámbito donde ocurriría el error, donde se puede lanzar esta sección.

53
00:02:47,560 --> 00:02:51,940
Luego un catch para manejar la excepción, para atrapar este error y hacer algo.

54
00:02:52,120 --> 00:02:54,580
El tipo más genérico es excepto entonces.

55
00:02:54,580 --> 00:02:59,590
Por ejemplo, podríamos colocar exception, aunque no es lo ideal, siempre recomendable manejar excepciones

56
00:02:59,590 --> 00:03:01,540
por su tipo de forma más concreta.

57
00:03:01,660 --> 00:03:04,390
Pero el tipo Exception es tan genérico.

58
00:03:04,510 --> 00:03:10,090
Al final estamos capturando cualquier cosa y tampoco no le vamos a dar un tratamiento adecuado según

59
00:03:10,090 --> 00:03:10,610
su tipo.

60
00:03:11,000 --> 00:03:16,030
Entonces le vamos a llamar e íbamos a imprimir.

61
00:03:16,480 --> 00:03:18,790
Entonces capturamos la acepción en tiempo ejecución.

62
00:03:26,010 --> 00:03:31,890
2 Punto un espacio digo que tenemos con el mensaje e punto que message.

63
00:03:33,610 --> 00:03:39,850
Este método, muy importante, porque contiene el resumen del error y también nos permite una vez que

64
00:03:39,850 --> 00:03:41,470
manejamos el error con el catch.

65
00:03:42,100 --> 00:03:43,270
Continuar con la ejecución.

66
00:03:49,580 --> 00:03:50,350
Bien, veamos.

67
00:03:51,270 --> 00:03:52,440
Entonces ahora ejecutamos.

68
00:03:54,720 --> 00:03:55,590
Ocurren error.

69
00:03:55,740 --> 00:04:00,720
Lo capturamos de forma genérica y capturamos la sesión en tiempo ejecución.

70
00:04:00,840 --> 00:04:03,850
Dividido por cero, continuamos con el flujo de nuestra aplicación.

71
00:04:03,870 --> 00:04:06,600
Por lo tanto, podemos continuar realizando otras tareas.

72
00:04:06,810 --> 00:04:08,500
Es importante en lo posible.

73
00:04:08,610 --> 00:04:12,390
Cuando manejamos error con el catch, cuando lo capturamos, indica.

74
00:04:12,390 --> 00:04:13,230
Era el tipo.

75
00:04:13,380 --> 00:04:14,550
Lo más concreto posible.

76
00:04:14,760 --> 00:04:17,520
Específico para dar un tratamiento adecuado.

77
00:04:17,700 --> 00:04:22,410
Y también, como explicaba, podríamos tener varios cazzo y cada catch captura una excepción distinta

78
00:04:22,410 --> 00:04:25,210
según su tipo y le damos un tratamiento diferente.

79
00:04:25,510 --> 00:04:25,980
Y también.

80
00:04:26,070 --> 00:04:27,570
Básicamente polimorfismo.

81
00:04:27,570 --> 00:04:31,320
También diferentes tratamientos según el tipo de error.

82
00:04:31,650 --> 00:04:36,530
Entonces en vez de utilizar Exception podríamos utilizar aritméticos exception.

83
00:04:37,620 --> 00:04:42,100
Entonces para acá tenemos aritmética y le cambiamos a E.

84
00:04:42,240 --> 00:04:45,900
Aunque lo mismo, pero de aritmética Exception y acá a?

85
00:04:47,950 --> 00:04:49,300
Entonces era mucho más concreto.

86
00:04:49,480 --> 00:04:50,440
Vamos a ejecutar.

87
00:04:51,430 --> 00:04:57,010
Aunque el resultado no cambia, pero sí cambia, el tipo que estaba manejando era más específico.

88
00:04:57,070 --> 00:05:02,050
También tenemos el finali F y bueno, es opcional.

89
00:05:02,080 --> 00:05:07,630
Como vimos, lo podemos implementar o no, pero acá podemos codificar alguna tarea que sea ejecutar

90
00:05:07,630 --> 00:05:10,870
siempre independiente, si ocurre o no ocurre el error.

91
00:05:11,710 --> 00:05:17,260
Para el ejemplo vamos a imprimir un mensaje, pero típicamente para cerrar recurso, por ejemplo, cerrar

92
00:05:17,260 --> 00:05:23,530
la conexión a la seats o cerrar un archivo que estamos trabajando que posiblemente quedó abierto cuando

93
00:05:23,530 --> 00:05:24,130
ocurre el error.

94
00:05:24,190 --> 00:05:29,530
En fin, lo vimos hace rato, curré el error que ha abierto la conexión y con Finali no da la posibilidad

95
00:05:29,650 --> 00:05:31,420
de finalizar la conexión.

96
00:05:37,090 --> 00:05:39,890
Entonces se ejecuta siempre con o sin excepción.

97
00:05:40,030 --> 00:05:40,720
Vamos a probar.

98
00:05:41,750 --> 00:05:42,530
Levantamos.

99
00:05:44,120 --> 00:05:48,010
Escenifican es opcional, pero se ejecuta siempre con o sin excepción.

100
00:05:48,280 --> 00:05:53,740
Acá lanza la sesión, la manejamos y después ejecutas finalde y luego continuamos con el flujo en otra

101
00:05:53,740 --> 00:05:54,160
aplicación.

102
00:05:54,520 --> 00:05:57,970
Pero si cambiamos en vez de 0, por ejemplo a 5.

103
00:06:02,540 --> 00:06:04,460
Se fijan, muestra el resultado.

104
00:06:04,640 --> 00:06:05,890
División 2.

105
00:06:06,440 --> 00:06:10,680
Igualmente imprime es opcional el finali por qué se ejecuta siempre?

106
00:06:10,990 --> 00:06:11,340
Quitadme.

107
00:06:11,360 --> 00:06:13,730
Continuamos con el flujo, obviamente porque no ocurre el error.

108
00:06:14,010 --> 00:06:15,560
Entonces lo que se salta es el catch.

109
00:06:16,130 --> 00:06:18,830
No atrapa error porque no ocurre la excepción, no se lanza.

110
00:06:18,950 --> 00:06:23,090
Ahora veamos cómo podemos capturar o tener múltiples catch manejo de errores.

111
00:06:23,270 --> 00:06:28,670
Supongamos que ahora el valor en vez de 5 o en vez de 0, por ejemplo, lo tenemos acá.

112
00:06:28,880 --> 00:06:33,050
Entonces por acá vamos a definir este entero divisor.

113
00:06:33,290 --> 00:06:35,600
Igual lo tenemos a través de un parámetro del usuario.

114
00:06:35,780 --> 00:06:42,590
Entonces el tipo string porque vamos a definir otra variable string valor igual.

115
00:06:42,710 --> 00:06:46,100
Bueno, puede ser con la clase Kanes o con el get out of pain.

116
00:06:47,420 --> 00:06:51,890
Para variar, punto chew input dialog se ingrese

117
00:06:55,070 --> 00:07:00,650
un entero y está entero, que en realidad no es un tipo entero, sino es un string que contiene un valor

118
00:07:00,650 --> 00:07:01,160
numérico.

119
00:07:01,250 --> 00:07:03,620
Lo vamos a convertir a un entero, a un intil.

120
00:07:04,220 --> 00:07:10,490
Entonces integer punto parse int lo convertimos valor.

121
00:07:11,530 --> 00:07:12,910
Perfecto, bien.

122
00:07:12,970 --> 00:07:14,470
Qué pasa si ejecutamos?

123
00:07:16,710 --> 00:07:17,940
Bueno, nos pide el valor.

124
00:07:18,860 --> 00:07:20,330
Ven, colocamos 2.

125
00:07:22,420 --> 00:07:27,230
Lanza el error porque acá tenemos que cambiar en vez de cero sería divisor.

126
00:07:27,580 --> 00:07:32,330
Por qué lanzar acepcion video por cero entonces acá divisor.

127
00:07:32,890 --> 00:07:33,340
Listo.

128
00:07:33,410 --> 00:07:34,900
Ahora volvemos a levantar.

129
00:07:36,090 --> 00:07:36,640
2.

130
00:07:38,520 --> 00:07:39,120
Perfecto.

131
00:07:39,210 --> 00:07:40,830
5 es opcional.

132
00:07:40,950 --> 00:07:43,110
Bueno, y todo continúa perfecto.

133
00:07:43,260 --> 00:07:49,860
No se lanza ningún error, pero si volvemos a ejecutar y colocamos R o qué cosa?

134
00:07:49,980 --> 00:07:52,110
Algo que no sea numérico, ok.

135
00:07:53,040 --> 00:07:53,730
Finaliza.

136
00:07:53,820 --> 00:07:54,990
Se fijan con un código.

137
00:07:54,990 --> 00:07:59,190
Uno lanza la presión en tiempo ejecución number format excepto.

138
00:07:59,310 --> 00:08:02,490
Por lo tanto, acá estamos manejando dividido por cero.

139
00:08:02,970 --> 00:08:07,890
Pero no estamos manejando la conversión de un string a un entero, porque podríamos colocar cualquier

140
00:08:07,890 --> 00:08:11,430
cosa que no sea numérica y lanzaría un number.

141
00:08:11,430 --> 00:08:12,180
Fórmate Septón.

142
00:08:12,420 --> 00:08:18,330
Entonces también podríamos manejar otro catch con esta excepción y capturar dar un tratamiento especial.

143
00:08:18,510 --> 00:08:24,710
Bueno, la idea que sea en orden, por ejemplo, primero convierte a un entero, así que podría lanzar

144
00:08:24,720 --> 00:08:27,840
primero number fórmate exception ahora perfecto.

145
00:08:27,900 --> 00:08:29,700
Si colocamos un cero, se convierte.

146
00:08:29,760 --> 00:08:31,290
No hay ningún problema, ningún error.

147
00:08:31,320 --> 00:08:34,770
Pero después dividimos por cero y podría lanzar el aritmético.

148
00:08:34,800 --> 00:08:37,590
Es como otra segunda excepción.

149
00:08:37,770 --> 00:08:40,500
Entonces acá tendríamos que primero manejar con un catch.

150
00:08:40,710 --> 00:08:49,290
Voy a bajar catch number format excepto n f de number formas de ser chón.

151
00:08:50,160 --> 00:08:50,790
Perfecto.

152
00:08:51,060 --> 00:08:52,870
Entonces tenemos una y otra.

153
00:08:53,520 --> 00:08:54,390
Entonces Shout

154
00:08:58,860 --> 00:09:00,090
se torna excepción.

155
00:09:05,760 --> 00:09:12,120
Se detiene escepción por favor ingrese un valor numérico y también podremos concatenar con el más con

156
00:09:12,120 --> 00:09:15,090
el get Musset obtener message.

157
00:09:15,540 --> 00:09:21,570
Esto es, lo vamos a quitar porque el que más corto bien el problema que si ejecutamos esto, obviamente

158
00:09:21,660 --> 00:09:22,740
no va a pasar nada.

159
00:09:22,980 --> 00:09:23,820
No lo estamos manejando.

160
00:09:23,850 --> 00:09:24,270
Por qué?

161
00:09:24,540 --> 00:09:27,300
Bueno, veamos, vamos a ejecutar Run.

162
00:09:28,730 --> 00:09:29,390
Vamos a colocar.

163
00:09:29,420 --> 00:09:29,810
Hola!

164
00:09:31,190 --> 00:09:32,600
Se fijan, no se maneja.

165
00:09:32,750 --> 00:09:34,790
Por qué tienes que estar dentro del traje?

166
00:09:34,880 --> 00:09:41,030
Recuerden que en el TRIE es donde se trata de ejecutar este código que podría lanzar acepcion y el ÍNTE

167
00:09:41,030 --> 00:09:42,640
y el parfait está afuera del Tri.

168
00:09:43,310 --> 00:09:45,020
Por lo tanto, tendríamos que mover esto.

169
00:09:45,290 --> 00:09:46,130
Esto es lo de copiar.

170
00:09:46,580 --> 00:09:47,510
Lo dejamos acá.

171
00:09:48,470 --> 00:09:51,550
Lo tenemos que mover acá dentro de este contexto.

172
00:09:52,040 --> 00:09:53,600
Y esto lo quitamos.

173
00:09:55,740 --> 00:09:57,310
Se fijan así?

174
00:09:57,560 --> 00:10:01,850
Acá se define la variable fuera del try y acá la asignamos pero con el percent.

175
00:10:02,000 --> 00:10:05,050
Entonces dentro del try intentamos ejecutar, convertir.

176
00:10:05,060 --> 00:10:06,350
Si todo sale bien, perfecto.

177
00:10:06,350 --> 00:10:12,410
Si no lanza el error y lo manejamos acá con el number format escepto lo vimos dividido por cero el divisor.

178
00:10:13,010 --> 00:10:14,420
Ahora si levantamos.

179
00:10:16,000 --> 00:10:18,220
Vamos a colocar cero para comenzar.

180
00:10:19,380 --> 00:10:20,190
Perfecto.

181
00:10:20,280 --> 00:10:23,550
Capturamos la acepción en tiempo ejecución dividido por cero.

182
00:10:23,850 --> 00:10:27,780
Por lo tanto, cae acá en aritmética, excepto acá está o manejando.

183
00:10:28,810 --> 00:10:30,850
Luego volvemos a levantar.

184
00:10:30,940 --> 00:10:33,040
Vamos a colocar 5.

185
00:10:34,850 --> 00:10:38,180
Bien 2 el Fanales ejecuta y continuamos.

186
00:10:38,300 --> 00:10:38,960
Está perfecto.

187
00:10:38,990 --> 00:10:39,680
Todo sale bien.

188
00:10:39,770 --> 00:10:41,120
No se lanza ninguna excepción.

189
00:10:41,660 --> 00:10:43,190
Ahora vamos a colocar.

190
00:10:45,690 --> 00:10:46,140
Qué tal?

191
00:10:47,580 --> 00:10:49,410
Trata de convertir quetal a un entero.

192
00:10:49,500 --> 00:10:55,310
Lanza la excepción y lo manejamos, se detectó una acepción ingres un valor numérico para el campo string.

193
00:10:55,590 --> 00:10:56,040
Qué tal?

194
00:10:57,100 --> 00:11:01,860
Y lo mismo si no colocamos nada, por ejemplo, qué se fijan?

195
00:11:01,980 --> 00:11:02,790
Es un string vacío.

196
00:11:02,820 --> 00:11:04,060
Entonces tiene que ser numérico.

197
00:11:04,170 --> 00:11:07,830
De esa forma lo estamos capturando incluso de forma opcional.

198
00:11:07,860 --> 00:11:09,900
Podríamos volver a invocar el método Main.

199
00:11:10,020 --> 00:11:12,300
Acá en el catch, por ejemplo.

200
00:11:13,110 --> 00:11:15,420
Entonces acá damos el mensaje de error.

201
00:11:16,950 --> 00:11:20,040
Mayne con los argumento args.

202
00:11:21,170 --> 00:11:21,850
Y lo mismo acá.

203
00:11:27,980 --> 00:11:28,880
Si lanza al error.

204
00:11:29,630 --> 00:11:33,530
Hola, acá dice se detectó una sección, ingresa un valor numérico.

205
00:11:33,920 --> 00:11:41,150
Colocamos 0 ok, capturamos escepcion en tiempo, ejecución Didio por cero y vuelve piré innumera hasta

206
00:11:41,150 --> 00:11:42,380
que la ingresemos correctamente.

207
00:11:42,500 --> 00:11:43,070
Por ejemplo.

208
00:11:43,070 --> 00:11:43,400
2.

209
00:11:44,340 --> 00:11:50,820
Perfecto, si continuamos con el flujo de nuestra aplicación y así podemos manejar el error, bien,

210
00:11:50,880 --> 00:11:56,730
por ahora quedamos hasta acá y a partir de la siguiente clase continuamos con crear nuestros exepciones

211
00:11:56,820 --> 00:11:59,790
de forma personalizadas con nuestra propia clase e implementación.

212
00:11:59,880 --> 00:12:00,540
Nos vemos.
