1 00:00:00,000 --> 00:00:25,079 Y veis vosotros, que estáis a punto de decirme eso, jolines, pues si realmente las clases de Java que están hechas, que las ha hecho un tío o una tía, no las ha hecho nadie, las ha hecho alguien, y avisa de esa manera tan maravillosa de cuando algo ha ocurrido, lanzando un objeto que me obliga a mí a pronunciarme, porque yo no puedo hacer lo mismo con mis propios códigos, 2 00:00:25,079 --> 00:00:27,879 porque ellos tienen la potestad de avisarme 3 00:00:27,879 --> 00:00:29,579 de que algo está pasando mal 4 00:00:29,579 --> 00:00:30,719 de esa manera tan chula 5 00:00:30,719 --> 00:00:33,340 que es creando un objeto, lanzándolo para que yo 6 00:00:33,340 --> 00:00:35,060 me llegue a las manos y diga ¿qué hago con él? 7 00:00:35,820 --> 00:00:37,740 pues yo también quiero hacer eso en mis códigos 8 00:00:37,740 --> 00:00:40,079 quiero poder lanzarse a los demás 9 00:00:40,079 --> 00:00:40,939 el que los use 10 00:00:40,939 --> 00:00:43,759 y decir vale, tú me estás usando al código que yo he hecho 11 00:00:43,759 --> 00:00:45,119 esto que haces no me gusta 12 00:00:45,119 --> 00:00:47,340 toma, te lanzo ese objeto 13 00:00:47,340 --> 00:00:49,719 y ahora ya te toca a ti decidir qué haces con él 14 00:00:49,719 --> 00:00:51,500 ¿por qué no pueden hacer nosotros eso si lo hacen ellos? 15 00:00:51,640 --> 00:00:53,240 pues claro que podemos si lo hacemos en 16 00:00:53,240 --> 00:00:55,600 todos nuestros códigos y de hecho es una práctica 17 00:00:55,600 --> 00:00:57,759 de programación muy buena 18 00:00:57,759 --> 00:01:01,179 y sería de la siguiente manera 19 00:01:01,179 --> 00:01:05,900 claro 20 00:01:05,900 --> 00:01:08,219 a ver 21 00:01:08,219 --> 00:01:09,900 lo vamos a meter en este mismo proyecto porque es un 22 00:01:09,900 --> 00:01:11,400 ejemplito chorra y ya está 23 00:01:11,400 --> 00:01:16,480 ¿dónde está esto? 24 00:01:19,950 --> 00:01:20,849 ya voy a tener que empezar 25 00:01:20,849 --> 00:01:22,150 a separar por 26 00:01:22,150 --> 00:01:24,230 esta aquí 27 00:01:24,230 --> 00:01:26,409 a ver si aquí hay 28 00:01:26,409 --> 00:01:29,049 aparte del workspace hay working set 29 00:01:29,049 --> 00:01:29,590 que es mucho más 30 00:01:29,590 --> 00:01:35,450 a ver, no son de hace años 31 00:01:35,450 --> 00:01:36,969 porque solo llevo un año 32 00:01:36,969 --> 00:01:39,230 con el portátil 33 00:01:39,230 --> 00:01:42,750 ninguno, todos estos son 34 00:01:42,750 --> 00:01:44,629 de hechos aquí en clase, o sea ninguno 35 00:01:44,629 --> 00:01:46,109 son de estos de casa 36 00:01:46,109 --> 00:01:48,349 por eso que los podría borrar todos 37 00:01:48,349 --> 00:01:50,549 sí, efectivamente 38 00:01:50,549 --> 00:01:54,730 ya, pero cuesta mucho, duele 39 00:01:54,730 --> 00:01:56,769 Pero sí, los podría borrar todos 40 00:01:56,769 --> 00:01:57,510 Y me quedaba igual 41 00:01:57,510 --> 00:02:00,909 Vale 42 00:02:00,909 --> 00:02:03,969 Ejemplo excepciones 43 00:02:03,969 --> 00:02:05,450 Que ya lo tenía y me has distraído 44 00:02:05,450 --> 00:02:06,390 Y ahora lo he perdido 45 00:02:06,390 --> 00:02:08,430 Hombre, como siempre 46 00:02:08,430 --> 00:02:11,650 ¿Ahí dónde? 47 00:02:12,430 --> 00:02:14,050 No, ejemplo excepciones 48 00:02:14,050 --> 00:02:14,930 Con una barra baja 49 00:02:14,930 --> 00:02:17,810 No, con una barra baja 50 00:02:17,810 --> 00:02:19,569 Sin barra baja no es 51 00:02:19,569 --> 00:02:22,849 Porque el que sin barra baja 52 00:02:22,849 --> 00:02:23,669 Es el del año pasado 53 00:02:23,669 --> 00:02:26,090 No tengo nada del año pasado 54 00:02:26,090 --> 00:02:28,590 Bueno, he dicho un año 55 00:02:28,590 --> 00:02:30,629 Es que los del año pasado no eran tan listos 56 00:02:30,629 --> 00:02:32,669 Como vosotros e íbamos con retraso 57 00:02:32,669 --> 00:02:36,389 A ver 58 00:02:36,389 --> 00:02:37,310 Yo 59 00:02:37,310 --> 00:02:40,889 Yo generalizo siempre 60 00:02:40,889 --> 00:02:42,229 Luego cada uno por separado 61 00:02:42,229 --> 00:02:43,590 Tenéis muchísimos recursos 62 00:02:43,590 --> 00:02:46,289 Lo que pasa es que luego os ponéis juntos 63 00:02:46,289 --> 00:02:48,050 Y cuando os ponéis juntos pues ya 64 00:02:48,050 --> 00:02:52,780 Ahí está 65 00:02:52,780 --> 00:02:56,080 Vale, pues por ejemplo 66 00:02:56,080 --> 00:03:02,639 Por ejemplo, nosotros vamos a hacer una aplicación 67 00:03:02,639 --> 00:03:04,580 que gestiona, pues yo que sé 68 00:03:04,580 --> 00:03:05,939 que queremos que gestione 69 00:03:05,939 --> 00:03:08,139 pedidos, por ejemplo, y nos van a 70 00:03:08,139 --> 00:03:09,939 dar datos de pedidos 71 00:03:09,939 --> 00:03:12,639 y una de las cosas que a nos gusta es que se empeñen 72 00:03:12,639 --> 00:03:14,680 en cuando el precio del pedido y me lo pongan negativo 73 00:03:14,680 --> 00:03:16,659 No, eso no se lo vamos a dejar 74 00:03:16,659 --> 00:03:18,479 que me pongan un precio de pedido negativo 75 00:03:18,479 --> 00:03:20,639 Pues, ¿cómo se lo vamos a 76 00:03:20,639 --> 00:03:22,759 limitar con esto de las excepciones? 77 00:03:23,419 --> 00:03:24,740 Pues venga, esta aplicación 78 00:03:24,740 --> 00:03:26,360 vamos a ofrecer nosotros 79 00:03:26,360 --> 00:03:28,780 una aplicación con unos métodos 80 00:03:28,780 --> 00:03:30,500 para gestionar pedidos y ya está 81 00:03:30,500 --> 00:03:32,900 venga, pues vamos a hacernos aquí 82 00:03:32,900 --> 00:03:33,680 un 83 00:03:33,680 --> 00:03:36,800 un paquete 84 00:03:36,800 --> 00:03:39,400 sí, ejemplo 85 00:03:39,400 --> 00:03:41,060 de nuestras excepciones 86 00:03:41,060 --> 00:03:45,259 un nombre de paquete muy feo y muy raro 87 00:03:45,259 --> 00:03:46,419 pero bueno, para cuando lo 88 00:03:46,419 --> 00:03:49,060 ahora, aplicación que gestiona 89 00:03:49,060 --> 00:03:51,419 pedidos, como no me ofrecéis nada más original 90 00:03:51,419 --> 00:03:53,180 pues pedido 91 00:03:53,180 --> 00:04:00,560 y del pedido solo nos interesa 92 00:04:00,560 --> 00:04:03,979 la descripción y lo que cuesta. 93 00:04:15,659 --> 00:04:18,259 Joder, es que realmente se me están olvidando las cosas. 94 00:04:24,259 --> 00:04:27,680 Vale, pues venga, vamos a hacerle aquí un constructor. 95 00:04:48,470 --> 00:04:50,670 Vale, pues venga, y ahora vamos a hacer nuestro main 96 00:04:50,670 --> 00:04:52,870 que gestiona pedidos, y ya está. 97 00:04:53,430 --> 00:04:56,689 Y esta aplicación, vale, es muy sencillita y muy pequeña, 98 00:04:56,689 --> 00:04:59,170 pero podría ser una aplicación enorme que ya ofrecemos 99 00:04:59,170 --> 00:05:01,009 a los demás para que la usen 100 00:05:01,009 --> 00:05:04,100 entonces 101 00:05:04,100 --> 00:05:06,079 vamos a hacer nuestro main, esta clase pedido 102 00:05:06,079 --> 00:05:07,680 tan estupenda, ya la hemos ofrecido a alguien 103 00:05:07,680 --> 00:05:10,259 y hemos dicho, uy tengo una clase pedido que es justo lo que necesitas 104 00:05:10,259 --> 00:05:12,480 pues te la ofrezco 105 00:05:12,480 --> 00:05:14,199 a ti para que tú la uses de tu aplicación 106 00:05:14,199 --> 00:05:16,079 vale, pues venga, vamos a usarla 107 00:05:16,079 --> 00:05:17,060 desde nuestra aplicación 108 00:05:17,060 --> 00:05:19,800 nos hacemos aquí un main 109 00:05:19,800 --> 00:05:31,310 y ahora que bien 110 00:05:31,310 --> 00:05:33,209 que me han ofrecido una clase pedido 111 00:05:33,209 --> 00:05:34,910 para usarla para hacer cosas 112 00:05:34,910 --> 00:05:37,389 Pues voy a trabajar 113 00:05:37,389 --> 00:05:38,889 Yo ahora ya con pedidos 114 00:05:38,889 --> 00:05:48,399 Voy a trabajar 115 00:05:48,399 --> 00:05:50,699 Pero si vamos a hacer nada, dos líneas de código y ya está 116 00:05:50,699 --> 00:05:52,459 Venga y le voy a decir 117 00:05:52,459 --> 00:05:54,180 A un tío, mi aplicación es 118 00:05:54,180 --> 00:05:55,600 Meter un pedido y ya está 119 00:05:55,600 --> 00:05:57,740 Bueno, es que de hecho no voy a poner ni un array 120 00:05:57,740 --> 00:06:03,240 Vale, ni un array 121 00:06:03,240 --> 00:06:08,519 Y le vamos a decir 122 00:06:08,519 --> 00:06:25,029 Bueno, pues vais a ver 123 00:06:25,029 --> 00:06:27,149 Que cosa tan maravillosa 124 00:06:27,149 --> 00:06:28,910 Podemos hacer 125 00:06:28,910 --> 00:06:31,089 Pues venga 126 00:06:31,089 --> 00:06:33,870 La aplicación va a ser pedir los datos 127 00:06:33,870 --> 00:06:35,009 Y crear el pedido 128 00:06:35,009 --> 00:06:35,910 Y ya está 129 00:06:35,910 --> 00:06:39,970 Ya, pero es que os ofrezco ideas 130 00:06:39,970 --> 00:06:42,029 O sea, os pido ideas y no me dais ninguna 131 00:06:42,029 --> 00:06:48,230 Claro, cuando ponemos magos 132 00:06:48,230 --> 00:06:49,189 Robots 133 00:06:49,189 --> 00:06:52,329 Criaturas cósmicas en general 134 00:06:52,329 --> 00:06:53,850 Pues no os enfadáis 135 00:06:53,850 --> 00:06:58,029 Ahora ya 136 00:06:58,029 --> 00:06:59,250 A poca cosa jugar 137 00:06:59,250 --> 00:07:13,250 stream 138 00:07:13,250 --> 00:07:16,850 descripción 139 00:07:16,850 --> 00:07:19,790 igual a 140 00:07:19,790 --> 00:07:22,930 pues ya está 141 00:07:22,930 --> 00:07:33,819 venga 142 00:07:33,819 --> 00:07:40,250 pre-ci-o 143 00:07:40,250 --> 00:07:50,189 next 144 00:07:50,189 --> 00:07:55,790 dabel 145 00:07:55,790 --> 00:07:58,750 y ahora la aplicación crea el pedido 146 00:07:58,750 --> 00:08:00,329 y te dice pedido creado y 147 00:08:00,329 --> 00:08:01,610 terminamos 148 00:08:01,610 --> 00:08:19,399 que lo muestre además 149 00:08:19,399 --> 00:08:21,680 y se acabó 150 00:08:21,680 --> 00:08:23,660 con lo cual vamos a poner un toString para que lo muestre 151 00:08:23,660 --> 00:08:31,439 ala pues 152 00:08:31,439 --> 00:08:33,700 una aplicación 153 00:08:33,700 --> 00:08:35,519 muy sofisticada que ha podido hacer 154 00:08:35,519 --> 00:08:37,559 alguien para gestionar pedidos gracias a que 155 00:08:37,559 --> 00:08:39,360 alguien le ha ofrecido una clase a su vez muy 156 00:08:39,360 --> 00:08:40,899 sofisticada con muchas cosas pedidas. 157 00:08:41,879 --> 00:08:43,399 Y nosotros pues probamos esta 158 00:08:43,399 --> 00:08:44,100 aplicación. 159 00:08:46,360 --> 00:08:51,100 ¿Bajar a dónde? 160 00:08:58,419 --> 00:08:58,940 Descripción. 161 00:08:59,460 --> 00:08:59,980 Bollis. 162 00:09:01,120 --> 00:09:01,720 Precio. 163 00:09:02,259 --> 00:09:03,779 56. Pedido 164 00:09:03,779 --> 00:09:04,879 creado. Vale. 165 00:09:05,639 --> 00:09:07,059 Ya está. Ahora. 166 00:09:09,059 --> 00:09:09,620 Venga. 167 00:09:10,539 --> 00:09:11,519 Vamos a dar el pedido. 168 00:09:11,919 --> 00:09:12,480 Descripción. 169 00:09:13,580 --> 00:09:15,539 Rotus. Precio. 170 00:09:15,899 --> 00:09:17,600 Pues como el usuario es muy espabilado, dice 171 00:09:17,600 --> 00:09:20,200 le voy a meter un precio negativo a ver si hay suerte 172 00:09:20,200 --> 00:09:22,279 y me lo ingresa en cuenta, en vez de retirármelo 173 00:09:22,279 --> 00:09:22,779 de la cuenta 174 00:09:22,779 --> 00:09:25,399 pues se lo ha comido 175 00:09:25,399 --> 00:09:28,159 y cuando él vice un automático 176 00:09:28,159 --> 00:09:30,240 que está conectado a este, lo que sea 177 00:09:30,240 --> 00:09:32,139 pues en lugar de un ingreso, la transferencia 178 00:09:32,139 --> 00:09:34,299 pues le va a hacer un ingreso al señor 179 00:09:34,299 --> 00:09:36,019 con lo cual 180 00:09:36,019 --> 00:09:38,399 este negativo a ver que controlarlo 181 00:09:38,399 --> 00:09:40,340 vale 182 00:09:40,340 --> 00:09:41,919 para que no nos la cuelen de esta manera 183 00:09:41,919 --> 00:09:44,299 entonces claro, si es muy fácil controlarlo 184 00:09:44,299 --> 00:09:45,720 pues bueno 185 00:09:45,720 --> 00:09:47,179 tenemos mil recursos 186 00:09:47,179 --> 00:09:49,559 podemos aquí meternos en un bucle 187 00:09:49,559 --> 00:09:51,379 y estarle preguntando todo el rato 188 00:09:51,379 --> 00:09:53,379 oye, mientras no sea negativo 189 00:09:53,379 --> 00:09:55,460 introduja otra vez, introduja otra vez 190 00:09:55,460 --> 00:09:56,200 introduja otra vez 191 00:09:56,200 --> 00:09:59,659 hay miles de posibilidades 192 00:09:59,659 --> 00:10:03,419 ¿cuál es una? muy bonita 193 00:10:03,419 --> 00:10:06,100 decir, a ver, en mi aplicación 194 00:10:06,100 --> 00:10:07,379 hay una cosa 195 00:10:07,379 --> 00:10:08,320 que no me gusta 196 00:10:08,320 --> 00:10:11,200 y es que este dato 197 00:10:11,200 --> 00:10:13,340 cuando me llega aquí 198 00:10:13,340 --> 00:10:15,559 es decir, mi problema ha sido 199 00:10:15,559 --> 00:10:17,419 en el constructor, mi problema es en el constructor 200 00:10:17,419 --> 00:10:19,240 y es 201 00:10:19,240 --> 00:10:21,340 precio del objeto pedido 202 00:10:21,340 --> 00:10:22,759 negativo, no lo quiero 203 00:10:22,759 --> 00:10:25,759 entonces yo identifico eso, situación de error 204 00:10:25,759 --> 00:10:27,059 esa no me gusta 205 00:10:27,059 --> 00:10:29,539 precio del pedido negativo 206 00:10:29,539 --> 00:10:31,419 no me gusta, vale 207 00:10:31,419 --> 00:10:33,559 lamentablemente es que no hay 208 00:10:33,559 --> 00:10:35,299 un tipo de dato que sea 209 00:10:35,299 --> 00:10:37,200 solo positivos, naturales 210 00:10:37,200 --> 00:10:39,620 o reales positivos 211 00:10:39,620 --> 00:10:41,279 es que no lo hay, entonces 212 00:10:41,279 --> 00:10:43,740 si lo pongo double, pues el precio 213 00:10:43,740 --> 00:10:44,799 va a poder ser negativo 214 00:10:44,799 --> 00:10:47,659 entonces, esa situación de error 215 00:10:47,659 --> 00:10:49,919 pues, ¿qué hago? me la voy a tener que tragar 216 00:10:49,919 --> 00:10:51,440 vale, bueno, pues hemos identificado 217 00:10:51,440 --> 00:10:53,580 situación de error, bueno, pues ¿qué es lo que hacemos? 218 00:10:53,720 --> 00:10:55,440 pues lo que hace la máquina virtual, que se apunta 219 00:10:55,440 --> 00:10:56,820 en su libretita, ¿no? en sus clases 220 00:10:56,820 --> 00:10:59,379 libretita, no me gusta que cuando yo estoy 221 00:10:59,379 --> 00:11:01,419 esperando un número sin comas, tú metas 222 00:11:01,419 --> 00:11:03,559 uno con coma, esto no me gusta 223 00:11:03,559 --> 00:11:05,340 me cleo una clase, pues 224 00:11:05,340 --> 00:11:07,799 nosotros estamos apuntando, no me gusta 225 00:11:07,799 --> 00:11:09,299 que esta variable 226 00:11:09,299 --> 00:11:11,279 double, que es el precio 227 00:11:11,279 --> 00:11:12,740 sea negativa, no me gusta 228 00:11:12,740 --> 00:11:14,820 Pues me voy a hacer una clase excepción 229 00:11:14,820 --> 00:11:16,259 Para esa situación que no me gusta 230 00:11:16,259 --> 00:11:18,080 Vamos a hacerlo, pues venga, primer paso 231 00:11:18,080 --> 00:11:21,059 Vamos a hacernos una clase excepción 232 00:11:21,059 --> 00:11:22,440 Para esa situación que no nos gusta 233 00:11:22,440 --> 00:11:24,240 Pues nos hacemos una clase 234 00:11:24,240 --> 00:11:28,370 Precio negativo 235 00:11:28,370 --> 00:11:30,190 Ponemos el nombre de la clase 236 00:11:30,190 --> 00:11:31,750 Que nos dé la gana, suelen ser muy largas 237 00:11:31,750 --> 00:11:34,129 Por convenio siempre acaban 238 00:11:34,129 --> 00:11:36,129 Con excepción, para que se vea 239 00:11:36,129 --> 00:11:38,029 Claro que son clases que reflejan 240 00:11:38,029 --> 00:11:39,690 Una situación de excepción que no nos gusta 241 00:11:39,690 --> 00:11:41,809 Pues precio negativo, excepción 242 00:11:41,809 --> 00:11:43,210 Por ejemplo, la podemos llamar 243 00:11:43,210 --> 00:11:44,490 Extens, excepción. 244 00:11:44,830 --> 00:11:45,889 Muy bien, vale. 245 00:11:46,610 --> 00:11:48,330 Entonces, precio negativo, excepción, 246 00:11:49,169 --> 00:11:55,450 para que incorpore todo lo que ya tiene excepción en sí, 247 00:11:56,549 --> 00:11:59,250 que es muy poco en realidad. 248 00:12:00,110 --> 00:12:01,929 Ahora vamos a ver qué es lo importante que tiene. 249 00:12:02,269 --> 00:12:05,570 Extens, pues la agredar de excepción. 250 00:12:15,889 --> 00:12:19,350 Vale, entonces, precio negativo, excepción, 251 00:12:19,350 --> 00:12:20,269 a heredar de exception 252 00:12:20,269 --> 00:12:22,429 ya tiene dentro 253 00:12:22,429 --> 00:12:25,090 un comportamiento 254 00:12:25,090 --> 00:12:27,490 porque exception implementa 255 00:12:27,490 --> 00:12:28,590 a su vez una interfaz 256 00:12:28,590 --> 00:12:31,389 con lo cual ya tiene dentro un comportamiento 257 00:12:31,389 --> 00:12:33,330 y tiene dentro además 258 00:12:33,330 --> 00:12:35,149 entre otras cosas una variable 259 00:12:35,149 --> 00:12:37,269 muy mona que se llama message 260 00:12:37,269 --> 00:12:39,129 que es el mensajito 261 00:12:39,129 --> 00:12:40,509 de error asociado a eso 262 00:12:40,509 --> 00:12:43,269 ¿vale? entonces exception 263 00:12:43,269 --> 00:12:44,909 si uno entra dentro de exception 264 00:12:44,909 --> 00:12:48,250 pues ve que 265 00:12:48,250 --> 00:12:49,509 exception 266 00:12:49,509 --> 00:12:51,470 ya hereda 267 00:12:51,470 --> 00:12:53,230 de una cosa que se llama 268 00:12:53,230 --> 00:12:54,230 throwable 269 00:12:54,230 --> 00:12:57,330 throwable, acabado en able 270 00:12:57,330 --> 00:12:58,929 es decir 271 00:12:58,929 --> 00:13:01,210 significa que si yo heredo de exception 272 00:13:01,210 --> 00:13:02,990 puedo ser lanzada 273 00:13:02,990 --> 00:13:05,750 puedo ser lanzada como excepción 274 00:13:05,750 --> 00:13:07,669 si yo no heredo de exception 275 00:13:07,669 --> 00:13:09,610 yo no puedo ser lanzada como excepción 276 00:13:09,610 --> 00:13:11,629 porque la que me da la capacidad 277 00:13:11,629 --> 00:13:13,509 de ser lanzada como excepción 278 00:13:13,509 --> 00:13:15,250 desde un código a otro 279 00:13:15,250 --> 00:13:16,029 es esta 280 00:13:16,029 --> 00:13:18,789 clase abstracta de ahí 281 00:13:18,789 --> 00:13:19,629 Esa clase de ahí 282 00:13:19,629 --> 00:13:21,629 No os trate, vale, esa clase 283 00:13:21,629 --> 00:13:24,590 Quedaría más bonito, la verdad 284 00:13:24,590 --> 00:13:25,929 Pero bueno, no pregunto 285 00:13:25,929 --> 00:13:28,570 Seguramente habrá una respuesta, pero no me he preguntado nunca 286 00:13:28,570 --> 00:13:29,730 Porque eso no es una interfaz 287 00:13:29,730 --> 00:13:31,570 Pero el nombre es de interfaz de toda la vida 288 00:13:31,570 --> 00:13:33,289 Throwable, vale, la sabe 289 00:13:33,289 --> 00:13:35,870 Lo que pasa es que, vale, tendrá más cosas 290 00:13:35,870 --> 00:13:37,529 Tendrá alguna propiedad o algo 291 00:13:37,529 --> 00:13:38,669 Y por eso, vale 292 00:13:38,669 --> 00:13:41,450 De hecho, throwable es la que tiene el message 293 00:13:41,450 --> 00:13:42,149 Por lo que veo 294 00:13:42,149 --> 00:13:46,980 Throwable 295 00:13:46,980 --> 00:13:47,799 Que está aquí 296 00:13:47,799 --> 00:13:51,600 no, no pasa nada 297 00:13:51,600 --> 00:13:52,279 vale 298 00:13:52,279 --> 00:13:54,879 probable 299 00:13:54,879 --> 00:13:57,320 es una clase porque además de 300 00:13:57,320 --> 00:13:59,220 tener el comportamiento de ser lanzaba 301 00:13:59,220 --> 00:14:00,820 tiene 302 00:14:00,820 --> 00:14:03,240 una propiedad 303 00:14:03,240 --> 00:14:05,820 que es una propiedad 304 00:14:05,820 --> 00:14:07,539 que es el mensajito 305 00:14:07,539 --> 00:14:09,779 de error que a mí me dé la gana ponerle a esa excepción 306 00:14:09,779 --> 00:14:10,740 el mensajito de error que me decimos 307 00:14:10,740 --> 00:14:13,360 tío, no me inventas un precio negativo 308 00:14:13,360 --> 00:14:14,659 vale 309 00:14:14,659 --> 00:14:17,659 pues entonces, desde el momento en que le das excepción 310 00:14:17,659 --> 00:14:19,740 tienes ya una variable para tu 311 00:14:19,740 --> 00:14:21,620 configurarla con el mensaje que te dé la gana 312 00:14:21,620 --> 00:14:23,860 y además tienes la capacidad de que 313 00:14:23,860 --> 00:14:25,879 alguien te lance, pues no hay más que hacer 314 00:14:25,879 --> 00:14:27,100 como mucho 315 00:14:27,100 --> 00:14:28,620 darle ese 316 00:14:28,620 --> 00:14:30,899 ese mensajito 317 00:14:30,899 --> 00:14:32,960 es lo más que hacemos, no hay que hacer más 318 00:14:32,960 --> 00:14:35,720 entonces el mensajito lo podemos en el propio constructor 319 00:14:35,720 --> 00:14:37,120 que es la forma de hacerlo 320 00:14:37,120 --> 00:14:39,080 ya inicializarlo 321 00:14:39,080 --> 00:14:41,200 precio negativo exception 322 00:14:41,200 --> 00:14:43,559 en el constructor 323 00:14:43,559 --> 00:14:53,620 A ver, que yo no soy tan vaga como tú 324 00:14:53,620 --> 00:14:58,259 Vale 325 00:14:58,259 --> 00:15:15,539 Y el punto y coma que se me olvida 326 00:15:15,539 --> 00:15:17,820 Vale, pues entonces 327 00:15:17,820 --> 00:15:18,840 Este constructor 328 00:15:18,840 --> 00:15:21,779 Llama al constructor de la superclase 329 00:15:21,779 --> 00:15:24,159 Y el constructor de la superclase 330 00:15:24,159 --> 00:15:25,139 Tiene un constructor 331 00:15:25,139 --> 00:15:27,019 tiene uno sin parámetros 332 00:15:27,019 --> 00:15:29,440 pero tiene otro con parámetros al que si tú le pasas 333 00:15:29,440 --> 00:15:31,460 un string lo utiliza 334 00:15:31,460 --> 00:15:32,580 para inicializar la variable 335 00:15:32,580 --> 00:15:34,679 con lo cual de esta manera sencilla 336 00:15:34,679 --> 00:15:36,559 pues ya está, la variable 337 00:15:36,559 --> 00:15:38,799 mensaje que tiene esta dentro 338 00:15:38,799 --> 00:15:41,019 la he inicializado con este valor 339 00:15:41,019 --> 00:15:43,700 luego ya he conseguido una clase 340 00:15:43,700 --> 00:15:45,100 cuyos objetos 341 00:15:45,100 --> 00:15:47,120 podrán ser lanzados porque heredan 342 00:15:47,120 --> 00:15:49,480 de exception que a su vez hereda de throwable 343 00:15:49,480 --> 00:15:51,179 y además tiene una variable 344 00:15:51,179 --> 00:15:52,620 mensaje dentro con ese dato 345 00:15:52,620 --> 00:15:55,039 bueno pues hala estupendo 346 00:15:55,039 --> 00:16:11,679 Ahora, ese es el primer paso, yo he identificado que aquí, yo que soy la que ofrezco esta clase pedido, he identificado que aquí hay un uso que van a hacer de mí que no me gusta, que es que me metan un precio negativo, ese no me gusta. 347 00:16:11,679 --> 00:16:13,759 vale, bueno pues 348 00:16:13,759 --> 00:16:14,860 en qué método 349 00:16:14,860 --> 00:16:17,860 en qué método voy a 350 00:16:17,860 --> 00:16:19,299 detectar yo si eso ha ocurrido 351 00:16:19,299 --> 00:16:21,740 y lo voy a avisar, en este caso 352 00:16:21,740 --> 00:16:23,820 en el constructor, en el constructor 353 00:16:23,820 --> 00:16:25,419 que es cuando me instancian 354 00:16:25,419 --> 00:16:28,139 yo digo, eh ojo, cuidadín 355 00:16:28,139 --> 00:16:29,279 ojo 356 00:16:29,279 --> 00:16:31,860 que si precio es negativo 357 00:16:31,860 --> 00:16:34,659 ojo 358 00:16:34,659 --> 00:16:38,700 si precio es menor que cero 359 00:16:38,700 --> 00:16:40,960 yo no quiero hacer esto 360 00:16:40,960 --> 00:16:42,919 y devolver el objeto 361 00:16:42,919 --> 00:16:45,360 pedido para que se guarde en la variable 362 00:16:45,360 --> 00:16:46,399 no quiero, dime 363 00:16:46,399 --> 00:16:53,120 eso sería curioso hablarlo con el usuario 364 00:16:53,120 --> 00:16:54,399 el que me ha pedido la aplicación a ver si 365 00:16:54,399 --> 00:16:56,539 admite cosas gratis o no 366 00:16:56,539 --> 00:16:57,559 pero sí, vale 367 00:16:57,559 --> 00:17:02,320 bueno, vamos a dejarlo 368 00:17:02,320 --> 00:17:04,299 este no regala nada 369 00:17:04,299 --> 00:17:06,140 vale, pues entonces 370 00:17:06,140 --> 00:17:13,359 él hace lo que le han pedido 371 00:17:13,359 --> 00:17:15,579 bueno, él quiere regalar cosas 372 00:17:15,579 --> 00:17:17,400 él no quiere regalar cosas gratis 373 00:17:17,400 --> 00:17:21,059 venga, ya está 374 00:17:21,059 --> 00:17:23,119 no, esto 375 00:17:23,119 --> 00:17:25,200 vale, entonces 376 00:17:25,200 --> 00:17:27,680 primera cosa que hemos hecho, identificar 377 00:17:27,680 --> 00:17:29,619 que hay algo que no nos gusta y hemos hecho una clase 378 00:17:29,619 --> 00:17:31,779 para ello, segunda cosa que hemos 379 00:17:31,779 --> 00:17:33,700 hecho, identificar 380 00:17:33,700 --> 00:17:35,859 en el código que yo estoy ofreciendo 381 00:17:35,859 --> 00:17:36,660 cuando 382 00:17:36,660 --> 00:17:39,400 quiero que salte ese error 383 00:17:39,400 --> 00:17:41,259 en qué momento quiero que salte 384 00:17:41,259 --> 00:17:43,519 pues podría ser en un método que hace algo 385 00:17:43,519 --> 00:17:45,099 con el precio, podría ser donde fuera 386 00:17:45,099 --> 00:17:46,799 en este caso, por ejemplo 387 00:17:46,799 --> 00:17:48,740 pues en el momento de crear el pedido 388 00:17:48,740 --> 00:17:50,619 yo en el momento de crear el pedido lo siento 389 00:17:50,619 --> 00:17:52,839 pero no quiero que el constructor 390 00:17:52,839 --> 00:17:54,700 continúe ni haga sus cosas 391 00:17:54,700 --> 00:17:57,440 ni me devuelva luego el objeto como hacen los constructores 392 00:17:57,440 --> 00:17:59,299 no quiero si el precio es menor o igual que cero 393 00:17:59,299 --> 00:18:01,579 con lo cual identifico que ese es el punto 394 00:18:01,579 --> 00:18:03,579 en el que quiero y en ese momento 395 00:18:03,579 --> 00:18:05,380 hago esta sentencia 396 00:18:05,380 --> 00:18:07,259 que es la que dice E aquí 397 00:18:07,259 --> 00:18:09,460 en lugar de continuar con el 398 00:18:09,460 --> 00:18:10,980 constructor y hacer lo que toque 399 00:18:10,980 --> 00:18:13,519 no, voy a crearte 400 00:18:13,519 --> 00:18:15,539 este objeto excepción porque he detectado esta cosa 401 00:18:15,539 --> 00:18:17,319 tan fea y te lo lanza 402 00:18:17,319 --> 00:18:18,640 pues vamos a crearlo 403 00:18:18,640 --> 00:18:21,819 new pedido 404 00:18:21,819 --> 00:18:23,460 negativo 405 00:18:23,460 --> 00:18:25,819 exceptio 406 00:18:25,819 --> 00:18:30,279 ala 407 00:18:30,279 --> 00:18:32,839 y desde el momento en que hay un throw 408 00:18:32,839 --> 00:18:34,980 ya no se hace nada más 409 00:18:34,980 --> 00:18:36,680 de lo que hay abajo, ni se hace nada 410 00:18:36,680 --> 00:18:39,039 porque esto ya, el método 411 00:18:39,039 --> 00:18:41,180 se ha parado y se niega a seguir 412 00:18:41,180 --> 00:18:43,220 el método se para aquí 413 00:18:43,220 --> 00:18:45,039 se niega a seguir, es como 414 00:18:45,039 --> 00:18:45,799 si fuera un return 415 00:18:45,799 --> 00:18:48,519 pero es un return acompañado de 416 00:18:48,519 --> 00:18:50,180 toma, toma este objeto 417 00:18:50,180 --> 00:18:52,720 a ver qué haces con él, algo tienes que hacer, no te puedes callar 418 00:18:52,720 --> 00:18:53,680 algo tienes que hacer 419 00:18:53,680 --> 00:18:58,599 ¿dónde pones super? 420 00:19:00,299 --> 00:19:02,579 hombre, si quieres apoyarte en el constructor 421 00:19:02,579 --> 00:19:04,559 de la superclase para usarlo 422 00:19:04,559 --> 00:19:05,920 para inicializar la variable, sí 423 00:19:05,920 --> 00:19:08,779 pero la podrías inicializar esa variable 424 00:19:08,779 --> 00:19:10,380 haciendo a ella directamente, si está con 425 00:19:10,380 --> 00:19:12,319 protected, que estará, supongo, si no 426 00:19:12,319 --> 00:19:14,559 este es el uso más 427 00:19:14,559 --> 00:19:16,380 cómodo, habitual, vale 428 00:19:16,380 --> 00:19:17,259 entonces 429 00:19:17,259 --> 00:19:20,400 ya está, el programa 430 00:19:20,400 --> 00:19:22,400 aquí se va a parar, me niego 431 00:19:22,400 --> 00:19:24,480 y encima te lanzo esta cosa 432 00:19:24,480 --> 00:19:26,380 ¿vale? ¿por qué no sale en rojo? 433 00:19:26,819 --> 00:19:28,480 porque desde el momento en que un método 434 00:19:28,480 --> 00:19:29,220 tiene un throw 435 00:19:29,220 --> 00:19:32,599 hay que avisar por código 436 00:19:32,599 --> 00:19:34,400 de que ese método puede que lance 437 00:19:34,400 --> 00:19:36,279 una excepción aquí, poniendo throws 438 00:19:36,279 --> 00:19:38,420 ¿vale? de hecho 439 00:19:38,420 --> 00:19:40,039 te ofrece la solución así 440 00:19:40,039 --> 00:19:41,079 ¿vale? 441 00:19:43,440 --> 00:19:44,579 create class 442 00:19:44,579 --> 00:19:46,599 ah, no 443 00:19:46,599 --> 00:19:48,000 es que he puesto mal el nombre de la clase 444 00:19:48,000 --> 00:19:49,960 precio, vale 445 00:19:49,960 --> 00:19:51,299 Ahora ya sí 446 00:19:51,299 --> 00:19:53,740 Precio negativo lo he puesto bien 447 00:19:53,740 --> 00:19:56,400 Ahora ya me sale 448 00:19:56,400 --> 00:19:57,759 Ahora ya me ofrece 449 00:19:57,759 --> 00:19:59,019 Lo que yo tengo que hacer 450 00:19:59,019 --> 00:20:01,519 Desde el momento en que un método 451 00:20:01,519 --> 00:20:02,559 Tiene un throw 452 00:20:02,559 --> 00:20:04,859 Y ahí puede que se pare 453 00:20:04,859 --> 00:20:07,599 Y se acabó y te doy el objeto 454 00:20:07,599 --> 00:20:09,480 Hay que avisar por código 455 00:20:09,480 --> 00:20:12,319 En cualquiera 456 00:20:12,319 --> 00:20:14,039 El constructor no pasa nada 457 00:20:14,039 --> 00:20:15,640 Va a seguir siendo constructor 458 00:20:15,640 --> 00:20:17,980 Lo que no puedes es cambiar el resto de su cabeza 459 00:20:17,980 --> 00:20:20,400 el resto, o sea, no puedes poner aquí delante nada 460 00:20:20,400 --> 00:20:22,660 pero el 3 lo puedes poner 461 00:20:22,660 --> 00:20:24,279 y sigue siendo un constructor válido 462 00:20:24,279 --> 00:20:25,380 vale 463 00:20:25,380 --> 00:20:27,539 entonces ahora ya que pasa 464 00:20:27,539 --> 00:20:30,140 ahora ya nosotros, nuestra parte 465 00:20:30,140 --> 00:20:32,180 como desarrolladores de la clase 466 00:20:32,180 --> 00:20:34,279 pedido que ya se la entregamos a los demás, ya ha terminado 467 00:20:34,279 --> 00:20:35,980 que hemos hecho, lo siento, pero 468 00:20:35,980 --> 00:20:37,920 si haces eso 469 00:20:37,920 --> 00:20:40,059 te lanzo ese objeto, el que me use 470 00:20:40,059 --> 00:20:41,980 que vea, vale, pues ahora yo 471 00:20:41,980 --> 00:20:44,259 ahora ya viene el otro, que es el que está usando 472 00:20:44,259 --> 00:20:44,839 esta clase 473 00:20:44,839 --> 00:20:47,259 y va a leer el precio 474 00:20:47,259 --> 00:20:48,839 y cuando va a instanciarlo 475 00:20:48,839 --> 00:20:50,799 dice, uh, que me dice 476 00:20:50,799 --> 00:20:52,700 el compilador, me dice, cuidado 477 00:20:52,700 --> 00:20:54,900 que esto puede 478 00:20:54,900 --> 00:20:56,740 que te lance una excepción 479 00:20:56,740 --> 00:20:57,859 de precio negativo 480 00:20:57,859 --> 00:21:00,839 entonces, eso ya es un 481 00:21:00,839 --> 00:21:02,319 aviso de que 482 00:21:02,319 --> 00:21:04,880 esa es una situación de error, que no le gusta a tu clase 483 00:21:04,880 --> 00:21:05,359 pedido 484 00:21:05,359 --> 00:21:08,799 tu clase pedido no le gusta que hagas eso 485 00:21:08,799 --> 00:21:10,920 y te va a lanzar un objeto 486 00:21:10,920 --> 00:21:11,740 si pasa eso 487 00:21:11,740 --> 00:21:14,380 y te obliga 488 00:21:14,380 --> 00:21:16,660 a que tú te pronuncies 489 00:21:16,660 --> 00:21:18,579 y digas, vale, pues 490 00:21:18,579 --> 00:21:20,319 tengo que hacer algo, entonces 491 00:21:20,319 --> 00:21:22,839 tienes dos alternativas 492 00:21:22,839 --> 00:21:25,180 ignorar 493 00:21:25,180 --> 00:21:26,720 esa excepción y pasar de ella 494 00:21:26,720 --> 00:21:28,940 o lo que es lo mismo 495 00:21:28,940 --> 00:21:30,539 propagarla hacia arriba 496 00:21:30,539 --> 00:21:32,200 que es la 497 00:21:32,200 --> 00:21:34,640 primera que te ofrece, que es 498 00:21:34,640 --> 00:21:36,700 vale, pues 499 00:21:36,700 --> 00:21:37,720 mi método main 500 00:21:37,720 --> 00:21:40,980 que la propague 501 00:21:40,980 --> 00:21:42,759 hacia arriba, pero 502 00:21:42,759 --> 00:21:44,819 cuando yo digo, oye, mi método main 503 00:21:44,819 --> 00:21:46,720 que la propague, entonces, si 504 00:21:46,720 --> 00:21:48,660 esa excepción aparece, el método 505 00:21:48,660 --> 00:21:50,259 se para. El main se va a parar. 506 00:21:51,319 --> 00:21:52,259 Pero es lo más cómodo 507 00:21:52,259 --> 00:21:54,599 de programar. Digo, 508 00:21:54,720 --> 00:21:56,680 ah, vale, me avisas de 509 00:21:56,680 --> 00:21:58,299 que como meta un precio negativo, 510 00:21:59,240 --> 00:22:00,640 aquí me llega un objeto de excepción. 511 00:22:01,839 --> 00:22:02,640 Se lo paso 512 00:22:02,640 --> 00:22:04,839 al main, que el main lo lance hacia arriba, 513 00:22:05,539 --> 00:22:06,720 pero eso sí, el programa va 514 00:22:06,720 --> 00:22:08,400 a parar. Es lo más cómodo. 515 00:22:08,480 --> 00:22:10,319 ¿Pero en el main tienes que poner el throw? 516 00:22:10,579 --> 00:22:12,460 Tienes que ponerlo. Ahora me dirás, 517 00:22:12,460 --> 00:22:13,480 ¿Y por qué no lo pones en otras? 518 00:22:14,880 --> 00:22:15,640 Siguiente fase 519 00:22:15,640 --> 00:22:17,240 Siguiente fase, ¿vale? 520 00:22:18,319 --> 00:22:19,599 Que tu curiosidad va muy rápido 521 00:22:19,599 --> 00:22:21,880 ¿Vale? 522 00:22:23,599 --> 00:22:24,039 Dime 523 00:22:24,039 --> 00:22:29,119 Sí, porque 524 00:22:29,119 --> 00:22:31,640 Cuando lo que va a hacer va a llamar 525 00:22:31,640 --> 00:22:32,900 Al print extract trace 526 00:22:32,900 --> 00:22:35,599 Que el print extract trace te incluye el mensaje y luego lo para 527 00:22:35,599 --> 00:22:38,019 Entonces, si nosotros ejecutamos esto 528 00:22:38,019 --> 00:22:40,140 Descripción bolis 529 00:22:40,140 --> 00:22:41,700 Le voy a meter 530 00:22:41,700 --> 00:22:44,720 Los bolis me van a costar 98 531 00:22:44,720 --> 00:22:47,019 No, no te dejo 532 00:22:47,019 --> 00:22:49,839 Te estoy prohibiendo 533 00:22:49,839 --> 00:22:52,019 Míralo, no me des precios negativos 534 00:22:52,019 --> 00:22:53,500 Por Dios santo bendito 535 00:22:53,500 --> 00:22:56,240 El print extract race 536 00:22:56,240 --> 00:22:58,319 Te incluye dentro del message 537 00:22:58,319 --> 00:23:10,160 Vale, entonces 538 00:23:10,160 --> 00:23:15,200 Que sí que lo ve 539 00:23:15,200 --> 00:23:17,400 Pues la interfaz te peta 540 00:23:17,400 --> 00:23:19,859 Si tú como dejes ahí el print extract trace 541 00:23:19,859 --> 00:23:21,640 Y tengas una consola abierta 542 00:23:21,640 --> 00:23:22,940 Lo ves en la consola 543 00:23:22,940 --> 00:23:30,940 Si no ve la consola, claro 544 00:23:30,940 --> 00:23:33,519 Pero se le ha parado el programa 545 00:23:33,519 --> 00:23:35,259 Eso sí 546 00:23:35,259 --> 00:23:38,579 Claro, entonces 547 00:23:38,579 --> 00:23:40,759 la idea es no trabajar así, hombre 548 00:23:40,759 --> 00:23:41,980 si desde un código 549 00:23:41,980 --> 00:23:44,660 me están avisando, que ojo 550 00:23:44,660 --> 00:23:46,819 que te voy a lanzar excepción porque esto es gravísimo 551 00:23:46,819 --> 00:23:48,880 si alguien lanza una excepción 552 00:23:48,880 --> 00:23:50,339 es porque asume que eso es muy grave 553 00:23:50,339 --> 00:23:52,339 pues hombre, no pases de su cara 554 00:23:52,339 --> 00:23:54,660 está bastante feo 555 00:23:54,660 --> 00:23:56,200 y aparte vas a hacer que tu programa 556 00:23:56,200 --> 00:23:58,039 no pases 557 00:23:58,039 --> 00:24:01,980 tú llamas a Brian 558 00:24:01,980 --> 00:24:04,480 y Brian te hace aquí un try catch 559 00:24:04,480 --> 00:24:05,240 cojonudo 560 00:24:05,240 --> 00:24:11,880 esto es que en el otro caso 561 00:24:11,880 --> 00:24:13,559 tú como desarrollador que cómodo 562 00:24:13,559 --> 00:24:14,480 no tengo que escribir nada 563 00:24:14,480 --> 00:24:17,220 pero luego tu programa cuando te mete uno negativo 564 00:24:17,220 --> 00:24:19,059 al tío se le para el programa 565 00:24:19,059 --> 00:24:21,420 vale como justo castigo por querer 566 00:24:21,420 --> 00:24:23,000 hacerle una transferencia vale pero 567 00:24:23,000 --> 00:24:25,500 mejor le dices que no 568 00:24:25,500 --> 00:24:26,920 y que tu programa siga 569 00:24:26,920 --> 00:24:29,359 vale pues la otra opción capturable 570 00:24:29,359 --> 00:24:30,220 ya sabemos cuál es 571 00:24:30,220 --> 00:24:32,420 pues tú la capturas 572 00:24:32,420 --> 00:24:35,460 Y aquí en la captura 573 00:24:35,460 --> 00:24:37,200 Pues le dices lo que sea 574 00:24:37,200 --> 00:24:40,819 Como me has dado 575 00:24:40,819 --> 00:24:42,640 Negativo 576 00:24:42,640 --> 00:24:44,180 Te cobro 1000 577 00:24:44,180 --> 00:24:46,599 Y ya está 578 00:24:46,599 --> 00:24:47,400 Te cobro 1000 579 00:24:47,400 --> 00:24:49,839 Y tú justo 580 00:24:49,839 --> 00:24:51,660 Y ahora te haces 581 00:24:51,660 --> 00:24:53,119 Esto de aquí 582 00:24:53,119 --> 00:24:56,579 Te lo haces a precio 1000 583 00:24:56,579 --> 00:25:04,519 ¿Vale? 584 00:25:09,430 --> 00:25:13,490 ¿Puedes pasarle un número ahí? 585 00:25:15,990 --> 00:25:17,809 Sí, sí, le puedo pasar un número ahí. 586 00:25:23,319 --> 00:25:23,759 Ah. 587 00:25:28,089 --> 00:25:29,589 Claro, porque es que le estoy llamando 588 00:25:29,589 --> 00:25:30,470 otra vez. Entonces, 589 00:25:31,109 --> 00:25:33,990 la manera de hacerlo, 590 00:25:34,269 --> 00:25:35,369 claro, es que con el método de control 591 00:25:35,369 --> 00:25:37,109 es muy retorcido. Pues, 592 00:25:37,269 --> 00:25:38,809 podríamos hacer 593 00:25:38,809 --> 00:25:43,980 como me has dado negativo, 594 00:25:43,980 --> 00:25:46,119 te pongo precio mil 595 00:25:46,119 --> 00:25:47,839 y 596 00:25:47,839 --> 00:25:52,700 pero P ya está 597 00:25:52,700 --> 00:25:53,200 declarada 598 00:25:53,200 --> 00:25:55,799 entonces tiene que poner P.precio 599 00:25:55,799 --> 00:25:58,440 ya pero 600 00:25:58,440 --> 00:25:59,519 tiene que estar instanciada 601 00:25:59,519 --> 00:26:01,720 es nul ahora mismo 602 00:26:01,720 --> 00:26:03,799 no se ha llegado a instanciar 603 00:26:03,799 --> 00:26:05,220 no no no 604 00:26:05,220 --> 00:26:07,839 que no 605 00:26:07,839 --> 00:26:10,099 a ver la excepción ha saltado aquí 606 00:26:10,099 --> 00:26:12,180 con lo cual el objeto no se ha llegado 607 00:26:12,180 --> 00:26:14,180 a crear. P es nul. Aquí P es nul. 608 00:26:17,140 --> 00:26:18,339 Claro, eso es 609 00:26:18,339 --> 00:26:20,539 lo que iba a hacer. Lo que pasa es que necesito... 610 00:26:20,539 --> 00:26:21,839 Al meterlo en el constructor 611 00:26:21,839 --> 00:26:23,559 es más retorcido. 612 00:26:24,660 --> 00:26:26,299 A ver, nos podemos poner 613 00:26:26,299 --> 00:26:27,980 aquí un constructor sin parámetros. 614 00:26:32,109 --> 00:26:32,650 Uy, qué hago. 615 00:26:33,109 --> 00:26:33,490 Perdón. 616 00:26:35,950 --> 00:26:37,250 Te pongo muy nerviosa, 617 00:26:37,329 --> 00:26:38,849 ¿verdad? Haciendo las cosas así. 618 00:26:39,250 --> 00:26:40,089 Muy nervioso. 619 00:26:41,130 --> 00:26:42,509 No te preocupes, no me molesta. 620 00:26:46,660 --> 00:26:53,799 Se lo confunde a todo el mundo 621 00:26:53,799 --> 00:26:55,440 Es que no distingo géneros 622 00:26:55,440 --> 00:26:56,859 Ni la derecha ni la izquierda 623 00:26:56,859 --> 00:27:00,140 Venga, pues a ver 624 00:27:00,140 --> 00:27:01,859 P set descripción 625 00:27:01,859 --> 00:27:04,720 Igual a la descripción 626 00:27:04,720 --> 00:27:06,240 Y P punto 627 00:27:06,240 --> 00:27:08,119 Set precio igual a mil 628 00:27:08,119 --> 00:27:10,259 Ala 629 00:27:10,259 --> 00:27:22,319 Ala, ya estaría 630 00:27:25,359 --> 00:27:27,599 Para que no te diga, podría no estar inicializado 631 00:27:27,599 --> 00:27:29,599 porque se inicializa dentro del 632 00:27:29,599 --> 00:27:31,640 catch. A ver, si tú no le pones 633 00:27:31,640 --> 00:27:33,059 nada aquí, ¿vale? 634 00:27:34,500 --> 00:27:35,619 Bueno, vale. 635 00:27:35,680 --> 00:27:37,079 Como es un objeto 636 00:27:37,079 --> 00:27:39,839 el toString 637 00:27:39,839 --> 00:27:43,599 que raro que no te 638 00:27:43,599 --> 00:27:45,660 no sé. Pero a mí me gusta más así 639 00:27:45,660 --> 00:27:47,220 porque normalmente siempre 640 00:27:47,220 --> 00:27:49,779 se inicializa la... 641 00:27:49,779 --> 00:27:51,039 Vale. Pero bueno, da igual. 642 00:27:51,579 --> 00:27:53,339 Vale, pues ya está. Pues entonces 643 00:27:53,339 --> 00:27:55,519 ahora ya efectivamente 644 00:27:55,519 --> 00:27:56,779 si ejecutamos esto 645 00:27:56,779 --> 00:27:59,779 y al tío le 646 00:27:59,779 --> 00:28:01,759 intentamos colar el negativo 647 00:28:01,759 --> 00:28:04,299 pues nada, te hace un pedido de mil 648 00:28:04,299 --> 00:28:04,859 y ya está 649 00:28:04,859 --> 00:28:07,720 entonces, esto es una 650 00:28:07,720 --> 00:28:10,259 esto como veis es una herramienta más 651 00:28:10,259 --> 00:28:12,599 simplemente, es una herramienta 652 00:28:12,599 --> 00:28:14,259 más que yo puedo usar 653 00:28:14,259 --> 00:28:16,740 en mis códigos para avisar 654 00:28:16,740 --> 00:28:18,579 de que algo no está bien 655 00:28:18,579 --> 00:28:20,440 entonces es un avisar 656 00:28:20,440 --> 00:28:22,140 muy radical porque además 657 00:28:22,140 --> 00:28:24,480 el método ya ni siquiera continúa 658 00:28:24,480 --> 00:28:26,519 el método ni siquiera continúa 659 00:28:26,519 --> 00:28:28,519 pero es un avisar 660 00:28:28,519 --> 00:28:30,279 que le obliga al otro 661 00:28:30,279 --> 00:28:31,960 a hacer algo con ello 662 00:28:31,960 --> 00:28:33,160 es un avisar mejor 663 00:28:33,160 --> 00:28:36,220 porque en este método es que no podemos avisar 664 00:28:36,220 --> 00:28:37,720 con el valor de retorno porque es un constructor 665 00:28:37,720 --> 00:28:40,440 pero imaginaos que tenemos un método 666 00:28:40,440 --> 00:28:42,240 modificar precio, por ejemplo 667 00:28:42,240 --> 00:28:44,160 entonces en el modificar precio 668 00:28:44,160 --> 00:28:46,160 ese le podríamos poner 669 00:28:46,160 --> 00:28:47,680 un valor de retorno 670 00:28:47,680 --> 00:28:50,440 ¿por qué las excepciones de la JRE 671 00:28:50,440 --> 00:28:52,400 no te piden que tenga el programa? 672 00:28:52,420 --> 00:28:54,140 sí, eso ahora mismito lo 673 00:28:54,140 --> 00:28:56,079 sí, ahora tenemos tiempo 674 00:28:56,079 --> 00:28:57,819 sí, sí, sí, ahora mismo lo completamos 675 00:28:57,819 --> 00:28:59,460 ¿vale? ahora mismo 676 00:28:59,460 --> 00:29:02,519 entonces, como recopilación 677 00:29:02,519 --> 00:29:03,920 esto es una forma radical 678 00:29:03,920 --> 00:29:06,140 pero mejor forma de que un método avise 679 00:29:06,140 --> 00:29:07,940 de que han pasado cosas, repito 680 00:29:07,940 --> 00:29:10,099 aquí es que el constructor es un poco 681 00:29:10,099 --> 00:29:12,000 especial porque no puede avisar de otra 682 00:29:12,000 --> 00:29:13,740 manera además, porque no tiene valor de retorno 683 00:29:13,740 --> 00:29:16,019 más allá que el propio objeto, pero imaginaos 684 00:29:16,019 --> 00:29:18,259 que tenemos un método cualquiera 685 00:29:18,259 --> 00:29:19,240 pues 686 00:29:19,240 --> 00:29:20,579 yo que sé 687 00:29:20,579 --> 00:29:31,259 modificar pedido 688 00:29:31,259 --> 00:29:32,799 entonces 689 00:29:32,799 --> 00:29:34,859 le pasamos el objeto 690 00:29:34,859 --> 00:29:36,460 pedido 691 00:29:36,460 --> 00:29:38,720 y le volvemos a poner el precio 692 00:29:38,720 --> 00:29:51,529 el precio y aquí 693 00:29:51,529 --> 00:29:54,309 p.setPrecio 694 00:29:54,309 --> 00:29:55,769 igual a pre, vale 695 00:29:55,769 --> 00:29:57,470 entonces 696 00:29:57,470 --> 00:30:00,829 y el escáner 697 00:30:00,829 --> 00:30:18,750 vale, pues aquí el desarrollador que está haciendo 698 00:30:18,750 --> 00:30:19,390 este método 699 00:30:19,390 --> 00:30:23,509 a ver 700 00:30:23,509 --> 00:30:24,710 que he hecho mal 701 00:30:24,710 --> 00:30:25,910 el retorno, claro 702 00:30:25,910 --> 00:30:31,289 vale, el desarrollador 703 00:30:31,289 --> 00:30:32,309 que está haciendo este método 704 00:30:32,309 --> 00:30:35,349 pues dice, vale, hay una cosa 705 00:30:35,349 --> 00:30:36,930 que puede que no me guste 706 00:30:36,930 --> 00:30:38,809 que es que me metan un precio negativo 707 00:30:38,809 --> 00:30:40,430 entonces de alguna manera 708 00:30:40,430 --> 00:30:42,650 tengo yo que avisar, bueno pues 709 00:30:42,650 --> 00:30:44,589 puede avisar con el valor de retorno 710 00:30:44,589 --> 00:30:47,269 y ya no podría hacer esto 711 00:30:47,269 --> 00:30:47,849 y decir 712 00:30:47,849 --> 00:30:52,430 si precio es menor que 0 713 00:30:52,430 --> 00:30:54,289 pues retún 714 00:30:54,289 --> 00:30:55,730 falsi, que no me vea rosa 715 00:30:55,730 --> 00:30:57,930 que no me vea rosa 716 00:30:57,930 --> 00:31:00,450 que sí 717 00:31:00,450 --> 00:31:02,390 que tiene sentido salir por 718 00:31:02,390 --> 00:31:04,109 en varias zonas del código feo 719 00:31:04,109 --> 00:31:04,569 pero bueno 720 00:31:04,569 --> 00:31:14,119 vale 721 00:31:14,119 --> 00:31:17,839 y si no 722 00:31:17,839 --> 00:31:19,859 pues entonces ya le pongo el precio 723 00:31:19,859 --> 00:31:20,900 y retún true 724 00:31:20,900 --> 00:31:32,779 Vale, entonces este método al menos algo ha hecho, que es avisar de si el precio es negativo o no y en el caso de que sea negativo no lo ha modificado y te avisa. 725 00:31:32,779 --> 00:31:58,180 Entonces, el desarrollador que es bueno y lo hace bien, pues aquí lo comenta y te dice, oye, true, si se pudo modificar porque era positivo, false, si no se modificó porque era negativo. 726 00:31:58,180 --> 00:32:01,140 y este es el método ya muy bien hecho 727 00:32:01,140 --> 00:32:02,400 entonces ahora 728 00:32:02,400 --> 00:32:05,039 el usuario que usa este método 729 00:32:05,039 --> 00:32:07,519 por ejemplo 730 00:32:07,519 --> 00:32:08,380 en nuestro main 731 00:32:08,380 --> 00:32:11,180 vamos a modificar el pedido 732 00:32:11,180 --> 00:32:21,299 a ver que tontería estoy haciendo 733 00:32:21,299 --> 00:32:23,240 le estoy pasando a pedido el parámetro 734 00:32:23,240 --> 00:32:24,480 cuando es el que llama el método 735 00:32:24,480 --> 00:32:25,759 que tontería es el dis 736 00:32:25,759 --> 00:32:27,680 el 737 00:32:27,680 --> 00:32:31,640 dis.setPrecio 738 00:32:31,640 --> 00:32:32,559 o setPrecio 739 00:32:32,559 --> 00:32:35,019 o precios sin más, o sea, estoy haciendo el tonto 740 00:32:35,019 --> 00:32:36,339 pero de mala manera 741 00:32:36,339 --> 00:32:38,400 precio igual a pre 742 00:32:38,400 --> 00:32:41,059 y ya está, que tontería, si estoy en la clase pedido 743 00:32:41,059 --> 00:32:42,940 vale 744 00:32:42,940 --> 00:32:44,539 bueno, pues entonces 745 00:32:44,539 --> 00:32:46,200 el que llama ahora al método 746 00:32:46,200 --> 00:32:48,539 este pedido, le vamos a modificar el precio 747 00:32:48,539 --> 00:32:50,079 pues p. 748 00:32:51,539 --> 00:32:52,720 tengo aquí 749 00:32:52,720 --> 00:32:53,900 un 750 00:32:53,900 --> 00:32:56,339 modificar pedido 751 00:32:56,339 --> 00:32:58,460 y veis el eclipse que listo es 752 00:32:58,460 --> 00:33:00,480 os pone aquí a la derecha lo que hayáis puesto 753 00:33:00,480 --> 00:33:01,599 en el comentario de arriba 754 00:33:01,599 --> 00:33:05,200 porque está puesto 755 00:33:05,200 --> 00:33:06,640 como formato javadoc 756 00:33:06,640 --> 00:33:07,660 que es empezando así 757 00:33:07,660 --> 00:33:09,160 vale, claro 758 00:33:09,160 --> 00:33:12,759 vale, entonces pues vale 759 00:33:12,759 --> 00:33:13,579 esto al menos 760 00:33:13,579 --> 00:33:16,099 al menos el desarrollador 761 00:33:16,099 --> 00:33:18,680 te ofrece aquí 762 00:33:18,680 --> 00:33:20,299 te dice, ah, espérate 763 00:33:20,299 --> 00:33:22,680 true se puede modificar, false si no 764 00:33:22,680 --> 00:33:24,960 pero tú puedes pasar de ese valor 765 00:33:24,960 --> 00:33:26,339 de retorno de comprobación 766 00:33:26,339 --> 00:33:28,720 y ya está 767 00:33:28,720 --> 00:33:29,579 y 768 00:33:29,579 --> 00:33:32,920 entonces es una forma de avisar 769 00:33:32,920 --> 00:33:34,819 un poquito más suave 770 00:33:34,819 --> 00:33:36,799 tú avisas con el valor de retorno 771 00:33:36,799 --> 00:33:38,759 y el desarrollador pues ya decide 772 00:33:38,759 --> 00:33:41,019 si usa ese valor de retorno, si no lo usa 773 00:33:41,019 --> 00:33:42,240 es más suave 774 00:33:42,240 --> 00:33:44,880 y ya, y no solo que es 775 00:33:44,880 --> 00:33:46,880 más suave, sino que a veces a lo mejor 776 00:33:46,880 --> 00:33:48,759 ni siquiera puedes avisar de si algo 777 00:33:48,759 --> 00:33:50,099 ha ido bien o mal con el valor de retorno 778 00:33:50,099 --> 00:33:53,000 porque puede que el propio método, aunque este no sea el caso 779 00:33:53,000 --> 00:33:55,059 su resultado sea devolverte 780 00:33:55,059 --> 00:33:57,019 algo, entonces el valor de retorno 781 00:33:57,019 --> 00:33:58,940 ya está empleado en devolverte 782 00:33:58,940 --> 00:34:01,160 un resultado, con lo cual no puedes usarlo 783 00:34:01,160 --> 00:34:02,160 como aviso 784 00:34:02,160 --> 00:34:04,720 para los métodos void conviene mucho usar los booleans 785 00:34:04,720 --> 00:34:06,980 claro, para los métodos void siempre habría 786 00:34:06,980 --> 00:34:08,800 que devolver un boolean 787 00:34:08,800 --> 00:34:11,039 que verifique si se ejecutó correctamente 788 00:34:11,039 --> 00:34:11,539 o si no 789 00:34:11,539 --> 00:34:14,360 la mayoría de hecho de las librerías lo tienen 790 00:34:14,360 --> 00:34:16,599 claro, pero 791 00:34:16,599 --> 00:34:18,679 los métodos que ya usa el valor de retorno 792 00:34:18,679 --> 00:34:20,920 como resultado se quedan sin poder 793 00:34:20,920 --> 00:34:22,500 avisar de si algo ha ido bien o mal 794 00:34:22,500 --> 00:34:23,880 se quedan sin poder avisar 795 00:34:23,880 --> 00:34:26,519 entonces ahí sí que la forma buena 796 00:34:26,519 --> 00:34:28,260 de avisar es con una excepción 797 00:34:28,260 --> 00:34:29,639 entonces aquí 798 00:34:29,639 --> 00:34:32,219 en lugar de avisar con el Boolean 799 00:34:32,219 --> 00:34:34,719 pues podríamos hacer la versión 2 800 00:34:34,719 --> 00:34:35,500 de este método 801 00:34:35,500 --> 00:34:37,860 que es más guay 802 00:34:37,860 --> 00:34:40,760 bueno, depende de lo que te importe 803 00:34:40,760 --> 00:34:41,679 a ti el precio negativo 804 00:34:41,679 --> 00:34:46,960 bueno, hay proyectos 805 00:34:46,960 --> 00:34:48,400 que tienen, efectivamente 806 00:34:48,400 --> 00:34:50,599 un montón de paquetes cada uno con sus cosas 807 00:34:50,599 --> 00:34:52,179 y uno de ellos es el paquete Exception 808 00:34:52,179 --> 00:34:54,239 con las tropecientas mil que tú has identificado 809 00:34:54,239 --> 00:34:56,400 y las vas lanzando donde interesa 810 00:34:56,400 --> 00:34:58,699 entonces el modificar pedido 811 00:34:58,699 --> 00:34:59,739 versión 2 812 00:34:59,739 --> 00:35:02,960 este no devuelve nada porque el valor de retorno 813 00:35:02,960 --> 00:35:04,039 no lo necesitamos 814 00:35:04,039 --> 00:35:06,360 y en lugar de hacer return false 815 00:35:06,360 --> 00:35:08,380 pues lo que hace es esto 816 00:35:08,380 --> 00:35:10,079 throw new 817 00:35:10,079 --> 00:35:15,150 throw new esto de aquí 818 00:35:15,150 --> 00:35:25,380 vale 819 00:35:25,380 --> 00:35:29,300 con lo cual 820 00:35:29,300 --> 00:35:32,539 esto ya no es feo porque no es un return 821 00:35:32,539 --> 00:35:34,059 es que esto ya es el propio return 822 00:35:34,059 --> 00:35:36,039 si 823 00:35:36,039 --> 00:35:38,260 bueno más que importarla avisar que este 824 00:35:38,260 --> 00:35:41,039 Si el precio es negativo 825 00:35:41,039 --> 00:35:42,059 Yo lanzo la excepción 826 00:35:42,059 --> 00:35:43,860 Es un aviso mucho más radical 827 00:35:43,860 --> 00:35:45,519 Porque el otro tiene que decir 828 00:35:45,519 --> 00:35:48,039 Salvo con la cosita esta 829 00:35:48,039 --> 00:35:50,000 Que veo que estás nervioso 830 00:35:50,000 --> 00:35:53,639 Entonces de otra forma 831 00:35:53,639 --> 00:35:55,579 Que no ha saltado el throw 832 00:35:55,579 --> 00:35:58,079 El código sigue y actualiza el precio 833 00:35:58,079 --> 00:35:58,880 Y ya está 834 00:35:58,880 --> 00:36:02,239 Como este método puede que lance throw 835 00:36:02,239 --> 00:36:03,820 Pues entonces 836 00:36:03,820 --> 00:36:06,039 Hay que avisar poniéndole el throw 837 00:36:06,039 --> 00:36:09,000 vale, se avisa 838 00:36:09,000 --> 00:36:09,880 poniéndole el flush 839 00:36:09,880 --> 00:36:12,760 vale, ahora mi main 840 00:36:12,760 --> 00:36:15,219 yo ahora quiero cambiar el precio 841 00:36:15,219 --> 00:36:15,920 de este 842 00:36:15,920 --> 00:36:18,239 p.modificar 843 00:36:18,239 --> 00:36:19,840 pedido 844 00:36:19,840 --> 00:36:22,760 pues es que ya directamente aquí 845 00:36:22,760 --> 00:36:24,840 ya en tiempo de escritura de código ya me está 846 00:36:24,840 --> 00:36:25,980 diciendo, ¿qué pasa? 847 00:36:27,260 --> 00:36:28,800 y si te dan 848 00:36:28,800 --> 00:36:30,159 uno negativo, ¿qué vas a hacer? 849 00:36:30,960 --> 00:36:32,460 no me ignores 850 00:36:32,460 --> 00:36:33,860 ¿qué haces? 851 00:36:33,860 --> 00:36:36,239 bueno, aún así le podemos ignorar 852 00:36:36,239 --> 00:36:38,380 como ya sabemos, aún así podemos ignorarle 853 00:36:38,380 --> 00:36:38,780 y decir 854 00:36:38,780 --> 00:36:42,340 que se pare el programa, si es negativo que se pare 855 00:36:42,340 --> 00:36:43,980 o lo capturamos, ¿vale? 856 00:36:44,000 --> 00:36:44,840 lo que ya sabemos 857 00:36:44,840 --> 00:36:46,519 o esto 858 00:36:46,519 --> 00:36:50,610 o lo capturamos 859 00:36:50,610 --> 00:36:53,210 lo que sea que queramos hacer 860 00:36:53,210 --> 00:36:55,449 ¿vale? luego esta 861 00:36:55,449 --> 00:36:57,610 bueno, es otra forma, repito 862 00:36:57,610 --> 00:36:59,409 de avisar de que algo está mal 863 00:36:59,409 --> 00:37:01,329 avisas con una excepción tuya 864 00:37:01,329 --> 00:37:02,969 y el otro tiene que pronunciarse 865 00:37:02,969 --> 00:37:06,349 y ahora ya sí que lo último 866 00:37:06,349 --> 00:37:08,650 último, último, que es lo que ha preguntado 867 00:37:08,650 --> 00:37:10,630 él, pero os lo iba a contar igual aunque no lo había preguntado 868 00:37:10,630 --> 00:37:12,190 así que no hace falta que le deis ahora 869 00:37:12,190 --> 00:37:14,250 collejas en el patio porque es que 870 00:37:14,250 --> 00:37:15,329 lo iba a contar igualmente 871 00:37:15,329 --> 00:37:18,030 ahora es cuando vosotros 872 00:37:18,030 --> 00:37:20,530 preguntáis 873 00:37:20,530 --> 00:37:21,730 vosotros, los demás 874 00:37:21,730 --> 00:37:23,650 jolines, pero si hemos estado 875 00:37:23,650 --> 00:37:26,130 usando el next in, el next double 876 00:37:26,130 --> 00:37:27,929 todo el rato, que puede lanzar excepciones 877 00:37:27,929 --> 00:37:29,909 y a mí no me han obligado a decir qué pasa 878 00:37:29,909 --> 00:37:31,789 ni me han obligado a poner un cross 879 00:37:31,789 --> 00:37:32,789 ni me han obligado a nada 880 00:37:32,789 --> 00:37:35,369 vale, es que hay un 881 00:37:35,369 --> 00:37:37,389 dentro de exception, que es la superclase 882 00:37:37,389 --> 00:37:40,150 hay una subclase 883 00:37:40,150 --> 00:37:42,329 que son las excepciones 884 00:37:42,329 --> 00:37:44,269 sobre las que no es obligado 885 00:37:44,269 --> 00:37:44,989 pronunciarse 886 00:37:44,989 --> 00:37:48,050 porque es que salen tanto en tiempo de ejecución 887 00:37:48,050 --> 00:37:50,050 como la de saltarte una ray 888 00:37:50,050 --> 00:37:51,969 la de que si estuvieras 889 00:37:51,969 --> 00:37:53,829 todo el rato, no te puedo traer cacho throws 890 00:37:53,829 --> 00:37:56,130 entonces, y esas excepciones 891 00:37:56,130 --> 00:37:58,349 se llaman run time exception 892 00:37:58,349 --> 00:37:59,650 vale 893 00:37:59,650 --> 00:38:00,710 entonces 894 00:38:00,710 --> 00:38:03,550 esta excepción 895 00:38:03,550 --> 00:38:05,429 de aquí, la que yo 896 00:38:05,429 --> 00:38:06,829 ajusto, claro 897 00:38:06,829 --> 00:38:08,989 si yo la heredo como excepción 898 00:38:08,989 --> 00:38:10,949 es súper grave, gravísima 899 00:38:10,949 --> 00:38:13,429 y el usuario que está usando 900 00:38:13,429 --> 00:38:15,070 mi clase que tiene el throw 901 00:38:15,070 --> 00:38:16,650 tiene que decidir qué hace 902 00:38:16,650 --> 00:38:19,369 pero si esta es una excepción de las que 903 00:38:19,369 --> 00:38:21,349 se llaman de que puedes ir en tiempo de 904 00:38:21,349 --> 00:38:23,510 ejecución en cualquier momento y que no voy a estar ahí 905 00:38:23,510 --> 00:38:25,550 ya desde tiempo de desarrollo 906 00:38:25,550 --> 00:38:27,710 pronunciándome, sino que me importan 907 00:38:27,710 --> 00:38:29,510 solo en tiempo de ejecución, solo aparecen 908 00:38:29,510 --> 00:38:30,849 ahí y solo son visibles ahí 909 00:38:30,849 --> 00:38:33,030 pues lo puedo decir, venga 910 00:38:33,030 --> 00:38:35,489 pues que sea 911 00:38:35,489 --> 00:38:36,449 runtime exception 912 00:38:36,449 --> 00:38:39,449 entonces si heredan 913 00:38:39,449 --> 00:38:40,750 de runtime exception 914 00:38:40,750 --> 00:38:43,449 estas yo puedo 915 00:38:43,449 --> 00:38:45,030 en tiempo de desarrollo ignorarlas 916 00:38:45,030 --> 00:38:47,409 me van a aparecer en tiempo 917 00:38:47,409 --> 00:38:49,650 de ejecución 918 00:38:49,650 --> 00:38:51,570 y me aparecerán y cuando yo las vea 919 00:38:51,570 --> 00:38:53,329 pues tendré que ver que hago, pero no las tengo 920 00:38:53,329 --> 00:38:54,670 que capturar, no tengo que hacer nada 921 00:38:54,670 --> 00:38:57,590 entonces si esta heredara de runtime exception 922 00:38:57,590 --> 00:38:59,789 pues aquí efectivamente 923 00:38:59,789 --> 00:39:01,829 yo podría 924 00:39:01,829 --> 00:39:04,190 haber llamado a modificar 925 00:39:04,190 --> 00:39:05,190 pedido v2 926 00:39:05,190 --> 00:39:08,230 y ni me obliga a capturarla ni a propagarla 927 00:39:08,230 --> 00:39:09,730 ni nada, pero me va a salir 928 00:39:09,730 --> 00:39:11,829 si luego meto un número negativo me va a salir 929 00:39:11,829 --> 00:39:19,789 ah, perdona, que es que 930 00:39:19,789 --> 00:39:21,829 ah, vale, precio, ahora es, ahora, ahora 931 00:39:21,829 --> 00:39:24,130 ahora, ahora, ahora, menos 87 932 00:39:24,130 --> 00:39:29,780 pon otro menos 87 933 00:39:29,780 --> 00:39:31,079 que creo que has metido a la descripción 934 00:39:31,079 --> 00:39:32,400 aunque te haya pedido 935 00:39:32,400 --> 00:39:34,579 No, no puede ser 936 00:39:34,579 --> 00:39:36,639 O sea, me ha mostrado esto 937 00:39:36,639 --> 00:39:38,900 Modificar pedido 938 00:39:38,900 --> 00:39:39,500 V2 939 00:39:39,500 --> 00:39:40,880 Precio 940 00:39:40,880 --> 00:39:43,219 Si precio, que es 941 00:39:43,219 --> 00:39:45,139 Ah, pre, vale, vale 942 00:39:45,139 --> 00:39:47,579 Si precio es negativo, no pre 943 00:39:47,579 --> 00:39:50,219 Si pre es negativo, vale 944 00:39:50,219 --> 00:39:53,940 Sí, bueno, esto 945 00:39:53,940 --> 00:39:56,019 Me lo pone a 1000 946 00:39:56,019 --> 00:39:58,300 Vale, me lo ha puesto a 1000, me lo vuelve a pedir 947 00:39:58,300 --> 00:39:59,599 Menos 9 948 00:39:59,599 --> 00:40:01,280 Y sale la excepción, claro 949 00:40:01,280 --> 00:40:03,079 Pero esta es una excepción 950 00:40:03,079 --> 00:40:05,880 Runtime, o sea, me ha salido aquí en tiempo de ejecución 951 00:40:05,880 --> 00:40:07,019 Pero en tiempo de desarrollo 952 00:40:07,019 --> 00:40:09,500 Yo no he hecho nada 953 00:40:09,500 --> 00:40:10,380 ¿Vale? 954 00:40:11,159 --> 00:40:13,320 Y claro, muchas de esas, pues, son muy pesadas 955 00:40:13,320 --> 00:40:15,500 Si las estuviéramos facturando todo el rato, son muy pesadas 956 00:40:15,500 --> 00:40:23,059 A ver 957 00:40:23,059 --> 00:40:26,679 Claro, las que tú haces 958 00:40:26,679 --> 00:40:28,780 Las que tú haces en tus propios códigos 959 00:40:28,780 --> 00:40:29,800 Para avisar a los demás 960 00:40:29,800 --> 00:40:32,039 las vas a hacer exception, porque las has hecho 961 00:40:32,039 --> 00:40:34,099 para eso, pero luego hay muchas 962 00:40:34,099 --> 00:40:35,559 otras que 963 00:40:35,559 --> 00:40:38,340 por naturaleza deberían 964 00:40:38,340 --> 00:40:40,199 parar el programa, como la de salirte 965 00:40:40,199 --> 00:40:41,860 de una RAI, porque deberían pararlo 966 00:40:41,860 --> 00:40:43,599 porque si no las cosas van a ir mal 967 00:40:43,599 --> 00:40:46,239 pero no puedes estar obligando a capturarlas todo el rato 968 00:40:46,239 --> 00:40:47,760 entonces es como un término medio 969 00:40:47,760 --> 00:40:50,300 oye, el programa lo va a tener que parar, porque si sigue 970 00:40:50,300 --> 00:40:52,199 la liamos, pero no te voy a estar 971 00:40:52,199 --> 00:40:54,340 obligando a todo el rato a decir que hacer 972 00:40:54,340 --> 00:40:56,239 porque serían demasiadas situaciones 973 00:40:56,239 --> 00:40:57,579 ¿vale? 974 00:40:57,579 --> 00:40:59,380 Entonces 975 00:40:59,380 --> 00:41:02,320 Ya está, pues esto 976 00:41:02,320 --> 00:41:06,360 Lo ponemos aquí 977 00:41:06,360 --> 00:41:12,199 Solamente como comentario 978 00:41:12,199 --> 00:41:13,079 Y ya está 979 00:41:13,079 --> 00:41:16,519 Si heredara de 980 00:41:16,519 --> 00:41:19,619 Runtime exception 981 00:41:19,619 --> 00:41:23,559 No sería obligatorio 982 00:41:23,559 --> 00:41:24,079 Tratar 983 00:41:24,079 --> 00:41:35,840 ¡Hala! Ya está 984 00:41:35,840 --> 00:41:39,630 No vamos a contar 985 00:41:39,630 --> 00:41:40,690 nada más decepciones.