1
00:00:00,330 --> 00:00:00,960
Continuamos?

2
00:00:01,020 --> 00:00:07,410
Veamos un ejemplo un poco más robusto la idea desacoplar esto de acá y puevlo, llevar a una clase toda

3
00:00:07,410 --> 00:00:12,930
esta lógica de dividir, llevarlo a una clase, por ejemplo calculadora o aritmética con el método dividir.

4
00:00:13,050 --> 00:00:18,660
Y también podríamos tener sobrecarga, por ejemplo, pasar enteros y dividir estos el numerador y el

5
00:00:18,660 --> 00:00:22,140
divisor, pero también podrían ser del tipo string que se fijan y convertir.

6
00:00:22,230 --> 00:00:28,430
Y ahí podrían ocurrir dos excepciones una convertir y otra al dividir dentro del mismo método.

7
00:00:29,190 --> 00:00:34,380
Entonces, en ejemplo, vamos a crear una clase calculadora.

8
00:00:37,080 --> 00:00:37,560
Perfecto.

9
00:00:37,630 --> 00:00:40,440
Y acá métodos public.

10
00:00:40,980 --> 00:00:41,640
Bueno, dividir.

11
00:00:41,670 --> 00:00:42,570
Qué tipo de dato?

12
00:00:42,660 --> 00:00:43,200
Un doble.

13
00:00:46,540 --> 00:00:52,430
Entonces se va a recibir dos enteros entero y el entero.

14
00:00:52,470 --> 00:00:53,970
Bueno, numerador y el divisor.

15
00:00:58,670 --> 00:01:02,990
Bueno, va a retornar el numerador dividido en el dividendo.

16
00:01:04,790 --> 00:01:09,050
Bien, pero acaso un 2 entero de forma automática se está convirtiendo a un tipo doble?

17
00:01:09,230 --> 00:01:11,780
Pero la idea es que no pierda los decimales entonces.

18
00:01:11,810 --> 00:01:14,660
Bueno, cualquiera de los dos tendría que ser del tipo doble.

19
00:01:14,810 --> 00:01:20,330
Entonces acá podríamos convertir de alguna forma, por ejemplo, haciendo un cast, convertir un entero

20
00:01:20,420 --> 00:01:21,060
a un doble.

21
00:01:21,410 --> 00:01:22,190
Y eso sí que se puede.

22
00:01:22,220 --> 00:01:29,690
Porque recuerden que de un tipo de menor tamaño, como es el entero de 32 bits de 32, se puede convertir

23
00:01:29,690 --> 00:01:32,240
a uno de mayor tamaño de 64.

24
00:01:32,300 --> 00:01:35,000
Cómo es el doble entonces acá?

25
00:01:35,090 --> 00:01:35,510
Double.

26
00:01:38,370 --> 00:01:38,730
Listo.

27
00:01:38,990 --> 00:01:45,030
Ahí puedo mantener decimales y tener una precisión mucho más importante en el resultado.

28
00:01:45,130 --> 00:01:45,270
Bien.

29
00:01:45,300 --> 00:01:47,730
Pero acá podría lanzar una excepción.

30
00:01:47,850 --> 00:01:49,170
Ya vimos, se fijan.

31
00:01:50,050 --> 00:01:51,180
Bueno, qué pasa?

32
00:01:51,300 --> 00:01:52,740
Bueno, esto acá ya lo voy a quitar.

33
00:01:52,830 --> 00:01:58,260
Lo voy a comentar porque en vez de utilizar acá esta división, esta conversión, la vamos a llevar

34
00:01:58,350 --> 00:01:59,340
a la clase calculadora.

35
00:02:00,630 --> 00:02:07,080
Entonces, por ahora lo vamos a quitar o lo comentamos acá, le vamos a llamar división.

36
00:02:07,230 --> 00:02:09,420
Lo vamos a definir acá en vez de divisor.

37
00:02:09,660 --> 00:02:13,740
O mejor mantenemos divisor y acá hint la división.

38
00:02:13,860 --> 00:02:14,400
Perfecto.

39
00:02:16,560 --> 00:02:17,910
Por defecto es 0.

40
00:02:18,390 --> 00:02:19,170
Pero división?

41
00:02:19,230 --> 00:02:20,810
Recuerdas del tipo doble?

42
00:02:22,380 --> 00:02:23,240
Doba Bien.

43
00:02:24,620 --> 00:02:27,680
Cero se inicializa para que la podamos utilizar en el TRIE.

44
00:02:27,920 --> 00:02:36,740
En este contexto, bien, vamos a crear la clase con el new, por ejemplo por acá calculadora caul igual

45
00:02:37,640 --> 00:02:39,260
new calculadora.

46
00:02:39,770 --> 00:02:40,310
Perfecto.

47
00:02:40,580 --> 00:02:43,370
Entonces en división en vez de cero.

48
00:02:43,730 --> 00:02:49,190
Bueno, por ahora Kaul punto dividir y que íbamos a dividir.

49
00:02:49,250 --> 00:02:54,710
Bueno, este número, este valor, pero convertido a un integer.

50
00:02:54,980 --> 00:02:56,510
Entonces bueno, es todo acá.

51
00:02:57,290 --> 00:03:00,620
Por ahora lo vamos a llevar acá por ahora.

52
00:03:01,040 --> 00:03:01,460
Perfecto.

53
00:03:01,460 --> 00:03:02,810
Entonces era divisor.

54
00:03:03,680 --> 00:03:06,980
Entonces vamos a colocar diez coma divisor.

55
00:03:08,000 --> 00:03:12,230
Y si se fijan, no nos pide, no nos obliga a manejar el trait catch.

56
00:03:12,320 --> 00:03:16,400
Claro, porque recuerden, es un tipo cheque, no es chequeada.

57
00:03:16,490 --> 00:03:23,030
No estamos obligado a manejar el error ni contrae y en fin, ni siquiera tampoco estamos obligado a

58
00:03:23,030 --> 00:03:25,790
lanzarlo acá, aunque lo podemos hacer de forma explícita.

59
00:03:26,600 --> 00:03:29,060
Por ejemplo, throws y el nombre de excepción.

60
00:03:29,240 --> 00:03:31,640
Bueno, aritmética se fijan.

61
00:03:31,730 --> 00:03:37,190
Acá estamos relanzado, aliment, estamos indicando que vamos a lanzar o posiblemente se podría lanzar

62
00:03:37,280 --> 00:03:42,170
esta acepción, pero si todo acá no nos pide por qué es no es chequeada.

63
00:03:42,290 --> 00:03:48,500
Entonces, bueno, obviamente si ejecutamos esto y colocamos un divisor incorrecto, por ejemplo cero

64
00:03:48,590 --> 00:03:50,870
o lo que sea, va a lanzar un error.

65
00:03:51,140 --> 00:03:55,490
Por qué no está dentro del trait catch que se lanza al error la excepción y finaliza la ejecución,

66
00:03:55,550 --> 00:03:57,140
tal como vimos en la clase anterior?

67
00:03:57,650 --> 00:04:00,860
Entonces, por eso lo correcto es que esto esté dentro.

68
00:04:01,250 --> 00:04:07,280
Pero bien, la idea de modificar este código para que en vez de lanzar un aritméticos exception lance

69
00:04:07,370 --> 00:04:10,730
una excepción personalizada y qué tasi sea chequeada.

70
00:04:10,820 --> 00:04:13,250
Es decir, nos obligue a manejar la excepción.

71
00:04:13,340 --> 00:04:14,000
Y esa es la idea.

72
00:04:14,180 --> 00:04:21,730
Entonces, en vez de lanzar esto, vamos a crear una clase decepción personalizada por acá.

73
00:04:23,760 --> 00:04:27,240
Daba clases, le vamos a llamar división por cero.

74
00:04:27,330 --> 00:04:27,990
Exception

75
00:04:32,280 --> 00:04:34,620
excepto bueno, por general y por convención.

76
00:04:34,650 --> 00:04:41,070
Todas nuestras clases implementadas decepción terminan con Exception, más que nada por un tema visual,

77
00:04:41,100 --> 00:04:46,380
para que a simple vista sepamos de qué se trata de una clase de sección de manejo de error.

78
00:04:46,590 --> 00:04:52,560
Entonces, por eso toda la clase termina con exception aritmética y septón culpó interseccion se fijan

79
00:04:52,650 --> 00:04:57,900
number fórmate septón división por cero exception mantener esa misma nomenclatura.

80
00:05:00,670 --> 00:05:01,390
Es tent.

81
00:05:01,660 --> 00:05:07,420
Bueno, si heredamos de renta empezar chón va a quedar no chequeada, por lo tanto notaríamos obligada

82
00:05:07,420 --> 00:05:07,960
a manejarla.

83
00:05:08,020 --> 00:05:13,120
Pero si heredamos de Exception, sería chequeada entonces Exception.

84
00:05:14,150 --> 00:05:18,980
Como opción o alternativa podría implementar constructor o podríamos utilizar constructor del padre,

85
00:05:19,130 --> 00:05:23,480
pero el constructor del padre que utilizaríamos sería el por defecto, el sin parámetro.

86
00:05:23,660 --> 00:05:30,950
Pero si queremos utilizar el constructor, de hecho control click acá tiene el constructor sin argumento

87
00:05:31,040 --> 00:05:32,510
este que se utiliza por defecto.

88
00:05:32,990 --> 00:05:37,430
Pero si quieres pasar un mensaje por defecto, tengo que meter este método, sólo escribirlo.

89
00:05:38,030 --> 00:05:40,550
Se fijan bien y Theme tiene otro más.

90
00:05:40,640 --> 00:05:44,720
Pero lo más típicos es el vacío y con algún mensaje.

91
00:05:45,770 --> 00:05:53,690
Entonces vamos a escribir este constructor Public Division 0 Exception Todo acá

92
00:05:56,930 --> 00:06:00,850
mensaje un string con el mensaje super.

93
00:06:01,610 --> 00:06:06,320
Al padre le pasamos el mensaje miletto algo simple.

94
00:06:06,500 --> 00:06:12,020
Bien, también expliqué la clase anterior de introducción que las clases que implementemos sus clases

95
00:06:12,080 --> 00:06:17,090
o derivadas de septón por general no aporta mucho código, no aporta mucha lógica.

96
00:06:17,150 --> 00:06:22,520
Podría tener un par de atributos, quizás algunos métodos, pero ni siquiera la gran mayoría son muy

97
00:06:22,520 --> 00:06:28,190
simple, solamente heredan decepción a lo más el constructor para pasar un mensaje personalizado, pero

98
00:06:28,190 --> 00:06:28,700
nada más.

99
00:06:28,850 --> 00:06:33,290
Lo que importa acá es clasificación de manejo de error para poder personalizar.

100
00:06:33,320 --> 00:06:38,870
Para poder lanzar nuestras excepciones específicas y después poder capturarlas según su tipo.

101
00:06:38,990 --> 00:06:40,890
Pero mayor funcionalidad no aporta.

102
00:06:41,810 --> 00:06:45,830
Entonces, justamente lo que vamos a hacer ahora implementar esta clase de excepción.

103
00:06:46,760 --> 00:06:50,160
División por ser exception y la vamos a lanzar en calculadora.

104
00:06:50,960 --> 00:06:51,290
Claro.

105
00:06:51,380 --> 00:06:52,850
Entonces, en este método.

106
00:06:53,830 --> 00:06:54,820
Vamos a quitar esto.

107
00:06:56,790 --> 00:07:03,120
Se fijan, vamos a validar, es importante validar que el dividendo de dividendo es igual.

108
00:07:04,380 --> 00:07:06,570
Acero perfecto.

109
00:07:06,660 --> 00:07:12,810
Lanzamos la escepción recuerden que se lanza con fru fru new.

110
00:07:12,900 --> 00:07:17,640
Creamos la instancia es un objeto división por cero excepto.

111
00:07:22,760 --> 00:07:25,290
dirigÃan no se puede dividir por cero.

112
00:07:26,190 --> 00:07:32,870
Las sábanas son perfectos, pero como estamos lanzando con fru y new, nos obliga a propagar esta acepción

113
00:07:32,960 --> 00:07:33,650
en el método.

114
00:07:33,740 --> 00:07:37,250
Por lo tanto, tenemos que definir quién este método obviamente se está lanzando.

115
00:07:37,340 --> 00:07:38,030
Esta acepción.

116
00:07:38,360 --> 00:07:39,920
Por qué es chequeada?

117
00:07:40,310 --> 00:07:41,600
Se fijan esa diferencia?

118
00:07:42,350 --> 00:07:42,890
Por ejemplo.

119
00:07:42,890 --> 00:07:45,070
Qué pasa si fuera necesario que lo hagan?

120
00:07:45,230 --> 00:07:48,860
Pero en vez de hacerlo fuera de errante de Ranta.

121
00:07:49,010 --> 00:07:49,580
Por ejemplo.

122
00:07:52,090 --> 00:07:53,800
Se fijan ahí no estamos obligados.

123
00:07:54,190 --> 00:08:00,820
No necesitamos, no nos obliga a relanzar o manejar o propagar esta excepción.

124
00:08:01,150 --> 00:08:02,050
Por qué sería?

125
00:08:02,140 --> 00:08:03,670
No chequeada, no chequeada.

126
00:08:03,730 --> 00:08:04,550
No estamos obligados.

127
00:08:04,990 --> 00:08:09,700
Pero si es del tipo checked, querea deception.

128
00:08:09,790 --> 00:08:11,800
Ahí sí que estamos obligados y nos indica el terror.

129
00:08:11,950 --> 00:08:18,100
Entonces acá lo podemos agregar en la asignatura, en la definición del método o lo podemos hacer de

130
00:08:18,100 --> 00:08:18,730
forma manual.

131
00:08:18,820 --> 00:08:20,110
Entonces frus.

132
00:08:21,430 --> 00:08:24,910
Y en nombre de la excepción, división por cero.

133
00:08:25,060 --> 00:08:26,400
Ahora un método por el azar.

134
00:08:26,410 --> 00:08:28,210
Varias excepciones, no solamente una.

135
00:08:28,480 --> 00:08:31,360
Entonces sería coma otra, coma otra.

136
00:08:31,570 --> 00:08:35,800
Por eso el throws puede hacer muchas en plural, separada por comas.

137
00:08:36,130 --> 00:08:37,360
Pero acá sería una sola.

138
00:08:37,910 --> 00:08:44,710
Bueno, y cómo lo estamos lanzando en el método o derivando el manejo de la excepción a la clase con

139
00:08:44,710 --> 00:08:47,860
el método main que la está utilizando, que está invocando este método dividir.

140
00:08:48,340 --> 00:08:50,320
Es decir, estamos propagando la excepción.

141
00:08:50,590 --> 00:08:53,180
Entonces el ejemplo escepción acá nos marca un error.

142
00:08:53,290 --> 00:08:55,960
Se fijan porque es chequeada, es Checker.

143
00:08:56,500 --> 00:08:58,050
Entonces la tenemos que tener dentro.

144
00:08:58,240 --> 00:08:59,020
Trae un catch.

145
00:08:59,160 --> 00:09:00,430
Entonces, ahora sí que sí.

146
00:09:00,640 --> 00:09:05,710
Por eso le quise colocar afuera al principio, fuera del try, para que vieran la diferencia.

147
00:09:05,830 --> 00:09:11,110
Entonces acá lo podemos colocar dentro del trait catch o bien relanzar o propagar en el método main.

148
00:09:11,470 --> 00:09:12,480
Tenemos dos alternativas.

149
00:09:12,730 --> 00:09:17,380
Lo vamos a manejar con el try catch, pero solamente para que lo tengan en cuenta, para que lo vean.

150
00:09:17,600 --> 00:09:21,100
Entonces con Fuu división por cero y desaparece el error.

151
00:09:21,200 --> 00:09:26,380
Y lo que hacemos es propagar esta sección directamente el método Main para que lo maneje ya la máquina

152
00:09:26,380 --> 00:09:28,900
virtual de Java y finalmente la que invoca este método main.

153
00:09:29,140 --> 00:09:35,530
Pero bien, la idea es quitar acá el feroz y manejarlo nosotros en el main con el try catch.

154
00:09:36,370 --> 00:09:39,280
Bueno, entonces vamos a comentar acá y acá también.

155
00:09:40,520 --> 00:09:43,420
Le quitamos el lint, obviamente, porque está definido acá como doble.

156
00:09:43,670 --> 00:09:45,590
La división y cambiamos.

157
00:09:45,950 --> 00:09:47,570
Bueno, esto acá ya lo podemos quitar.

158
00:09:50,140 --> 00:09:56,230
Ya que acá se convierte con el par Saint y cambiamos esta división por este método.

159
00:09:56,790 --> 00:10:00,760
Entonces este método lo cortamos y lo dejamos dentro del TRIE.

160
00:10:01,150 --> 00:10:03,350
Acá lo reemplazamos por esto.

161
00:10:03,700 --> 00:10:04,640
Entonces lo pegamos.

162
00:10:04,660 --> 00:10:05,230
Perfecto.

163
00:10:05,860 --> 00:10:06,400
Está bien.

164
00:10:06,580 --> 00:10:11,200
Toller indica el error porque en realidad se está lanzando la acepción división por cero.

165
00:10:11,420 --> 00:10:14,880
Deception Acá se fijan división por cero.

166
00:10:16,150 --> 00:10:22,840
Entonces, por supuesto que acá, en vez de aritmética, exception sería división por cero y listo.

167
00:10:22,960 --> 00:10:27,250
Hoy desaparece el error y lo estamos manejando de forma más específica en el Tri.

168
00:10:27,370 --> 00:10:34,510
Recuerden como es chequeada o checked nos obliga a manejarla con el TRIE y con el Cacho, mientras que

169
00:10:34,510 --> 00:10:36,820
en ambas formas Deception No, no es necesario.

170
00:10:37,180 --> 00:10:39,760
De hecho recuerden que si quitamos esto da lo mismo.

171
00:10:40,000 --> 00:10:41,990
Namarca error por ser chequeé.

172
00:10:42,220 --> 00:10:45,250
De hecho, recuerden que en ambas formas Deception heredÃ.

173
00:10:45,370 --> 00:10:48,880
Bueno, primero de aligual argumen deception y ya está.

174
00:10:49,000 --> 00:10:49,660
De derritan.

175
00:10:50,920 --> 00:10:53,200
De hecho, lo podemos revisar, reinte.

176
00:10:53,380 --> 00:11:00,040
Por lo tanto, no es chequeada, no está obligada a manejarla, pero está así y eso es.

177
00:11:00,190 --> 00:11:02,800
Entonces, ahora si ejecutamos con el Rahn.

178
00:11:04,090 --> 00:11:07,210
Perfecto, colocamos cero, ok.

179
00:11:08,290 --> 00:11:10,540
Listo, capturamos la sesión.

180
00:11:10,570 --> 00:11:12,820
Tiempo ejecución no se puede ir por 0.

181
00:11:13,900 --> 00:11:19,930
Bueno, 4 ok, de 2,5, pero si se fijan no se puede ir por cero.

182
00:11:20,020 --> 00:11:25,630
El mensaje de Rob personalizado que colocamos acá en Calculadora División por Cero Septón no se puede

183
00:11:25,630 --> 00:11:30,260
ir por cero mismo mensaje o mensaje que indicamos en el constructor.

184
00:11:30,340 --> 00:11:36,010
Cuando se lanza decepción y está molesto, continuamos la siguiente clase implementando una sobrecarga.

185
00:11:36,100 --> 00:11:44,530
Otro método dividir que lance dos excepciones de por cero y en ambas fórmate section pero propio personalizado

186
00:11:44,650 --> 00:11:45,820
que sea chequeado.

187
00:11:45,910 --> 00:11:46,600
Nos vemos.
