027.- Curso de Java. Manejar errores y excepciones.
Resumo
TLDREl video explica las excepciones en Java, que son formas de manejar errores que pueden surgir durante la ejecución de un programa. Se abordan conceptos como el manejo de excepciones con bloques 'try-catch', la creación de excepciones personalizadas y el uso de las palabras clave 'throw', 'throws', y 'finally'. Además, se ofrecen ejemplos que muestran cómo manejar errores comunes, como intentar acceder a un elemento fuera de los límites de un array o convertir entradas no numéricas. Se concluye discutiendo cómo lanzar excepciones y la importancia de la gestión adecuada de errores en la programación Java.
Conclusões
- 🐞 Las excepciones son errores en tiempo de ejecución que pueden ser manejados.
- 💻 Utilizar bloques 'try-catch' permite capturar y manejar excepciones.
- 🔄 La palabra clave 'throw' se usa para lanzar excepciones intencionalmente.
- 🚫 La palabra clave 'throws' indica que un método puede lanzar excepciones.
- 🔍 Los bloques 'finally' aseguran la ejecución de código de limpieza.
- 📜 Las excepciones de Java tienen una jerarquía estructurada.
- 📥 Se pueden crear excepciones personalizadas extendiendo la clase 'Exception'.
- 👨💻 Es importante manejar excepciones para mejorar la robustez del software.
- ⚠️ Manejar errores de usuario puede evitar fallos inesperados en el programa.
- 📊 Ejemplos prácticos ayudan a entender cómo manejar excepciones en situaciones comunes.
Linha do tempo
- 00:00:00 - 00:05:00
Este video tutorial aborda las excepciones en Java, que son errores comunes en la programación y cómo manejarlos. Se explican cuatro aspectos clave: manejar excepciones, ignorarlas, generar excepciones de manera intencionada, y crear excepciones personalizadas.
- 00:05:00 - 00:10:00
Las excepciones en Java se introducen como un conjunto de clases diseñadas para gestionar errores, que se clasifican en dos tipos: Error y Exception. La clase Throwable es la superclase de todas las excepciones en Java, de donde derivan otros tipos como RuntimeException.
- 00:10:00 - 00:15:00
Las excepciones se dividen en errores fatales, que son difíciles de controlar, y situaciones excepcionales que pueden manejarse mediante el uso de clases de excepciones. El tutorial también menciona la técnica de manejo de errores con estructuras condicionales como condicionales y switch-case.
- 00:15:00 - 00:20:00
Se introducen las palabras clave 'throw' para lanzar excepciones y 'catch' para capturarlas. Se discute la jerarquía de las clases de excepciones y se destaca la importancia de manejar adecuadamente estas excepciones para no interrumpir la ejecución del programa.
- 00:20:00 - 00:25:00
Un error común es tratar de acceder a un índice fuera de un array, lo que genera una excepción al ejecutar el programa a pesar de que compile correctamente. Se menciona que estos errores son bastante descritos explícitamente en los mensajes de error generados.
- 00:25:00 - 00:30:00
El video proporciona un ejemplo de un programa que suma argumentos pasados desde la línea de comandos. Se muestra cómo manejar la conversión de entradas que podrían no ser válidas, como cuando el usuario introduce caracteres no numéricos, utilizando bloques try-catch.
- 00:30:00 - 00:35:00
Se ilustra un bloque try-catch en un programa que suma números decimales, mostrando cómo el programa puede manejar excepciones como NumberFormatException. Se presentan pasos prácticos sobre cómo configurar y modificar el código para manejar excepciones correctamente.
- 00:35:00 - 00:40:00
Se exploran otras excepciones que podrían surgir al dividir números, centrándose en ArithmeticException al intentar dividir por cero y cómo el bloque try-catch maneja ambos tipos de errores.
- 00:40:00 - 00:45:00
El bloque finalmente se utiliza para asegurarse de que ciertas declaraciones se ejecuten independientemente de si ocurrió o no una excepción. Esto es útil para asegurar que las conexiones a archivos se cierren adecuadamente después de su uso.
- 00:45:00 - 00:51:51
Finalmente, se analiza cómo lanzar excepciones en métodos, utilizando 'throws' para indicar que un método puede lanzar excepciones. Se presentan ejemplos prácticos de cómo crear clases que utilicen y gestionen excepciones adecuadamente.
Mapa mental
Vídeo de perguntas e respostas
¿Qué son las excepciones en Java?
Las excepciones en Java son errores que ocurren durante la ejecución de un programa y que pueden ser manejados para evitar que el programa falle.
¿Cómo se puede manejar una excepción?
Se puede manejar una excepción utilizando bloques 'try' y 'catch' que permiten ejecutar código y capturar errores.
¿Qué palabras clave se utilizan para trabajar con excepciones en Java?
Las palabras clave son 'try', 'catch', 'finally', 'throw' y 'throws'.
¿Qué es la palabra clave 'throw'?
'throw' se utiliza para lanzar explícitamente una excepción cuando se detecta un error.
¿Cómo se pueden crear excepciones personalizadas?
Se pueden crear excepciones personalizadas creando una nueva clase que extienda de la clase 'Exception'.
¿Qué es un bloque 'finally'?
El bloque 'finally' se ejecuta al final de un bloque 'try' y se utiliza para realizar operaciones de limpieza, independientemente de si ocurrió una excepción.
¿Qué tipo de errores se pueden presentar en un programa Java?
Pueden presentarse errores debido a typos, incompatibilidad de tipos de datos, entre otros.
¿Qué es un 'catch'?
Un 'catch' es un bloque que captura las excepciones lanzadas dentro de un bloque 'try'.
¿Cuál es la diferencia entre 'throws' y 'throw'?
'throws' se utiliza en la declaración de un método para indicar que puede lanzar una excepción, mientras que 'throw' se usa para lanzar una excepción en un punto específico del código.
¿Cómo se puede producir una excepción intencionalmente?
Se puede lanzar una excepción intencionalmente utilizando la palabra clave 'throw' seguido de una instancia de la excepción.
Ver mais resumos de vídeos
Aula 4 - Voz 1 - Músculos extrínsecos da laringe
FLAVIO AUGUSTO DÁ DICA INFALÍVEL DE VENDAS
3). De las transformaciones económicas a la gobernanza global (Video #31)
2).Mirar al pasado para entender el presente-Curso Geopolítica. (Video#30)
iprodam les 2 CGM deel 1
Moda circular: El futuro de una industria, ¿por dónde empieza la innovación?
- 00:00:00[Música]
- 00:00:08[Música]
- 00:00:18[Música]
- 00:00:42eh qué tal video tutorial número 27 del
- 00:00:45curso de Java en el que vamos a ver las
- 00:00:48denominadas excepciones las
- 00:00:51exceptions que es el modo de tratar los
- 00:00:53errores los bgs los typos que impiden
- 00:00:57que un programa se ejecute correctamente
- 00:00:59en Java son una parte natural del
- 00:01:02proceso de desarrollo de software Aunque
- 00:01:04tan natural como
- 00:01:08desagradable en resumen lo que vamos a
- 00:01:10ver en este víde tutorial es en primer
- 00:01:13lugar Cómo poder responder a las
- 00:01:17excepciones que se producen en un
- 00:01:19programa Java en segundo lugar veremos
- 00:01:22Cómo crear métodos que puedan ignorar
- 00:01:24esas excepciones dejando que sea otra
- 00:01:27clase la que las maneje veremos En
- 00:01:30tercer lugar Cómo usar métodos que
- 00:01:33provoquen ellos mismos excepciones por
- 00:01:35alguna razón queremos que se produzca Y
- 00:01:38por último veremos Cómo podemos crear
- 00:01:40también nuestras propias
- 00:01:43excepciones las excepciones son desde
- 00:01:46luego algo muy natural Aunque natural
- 00:01:49probablemente sea la palabra más amable
- 00:01:51que se ha usado para describirlas en la
- 00:01:54mayoría de las ocasiones se dice que las
- 00:01:56letras de las canciones de rap son
- 00:01:58tomadas de los de los programadores
- 00:02:01desesperados después de horas intentando
- 00:02:03localizar la causa de algún
- 00:02:06error eh Porque Además este tipo de
- 00:02:09errores suele ser de lo más variado eh
- 00:02:12Como decíamos puede ser un simple error
- 00:02:14de typo que ponemos una letra de más o
- 00:02:17que se nos olvida de poner un punto y
- 00:02:18coma al final de una declaración Pero
- 00:02:22además de eso dentro de la clasificación
- 00:02:24de los errores más comunes en una
- 00:02:26aplicación existen aquellos que no
- 00:02:29pueden evitar totalmente hagamos lo que
- 00:02:31hagamos en el código por ejemplo que el
- 00:02:34usuario tenga que escribir un número y
- 00:02:36que escriba una letra le podemos poner
- 00:02:38un mensaje muy grande eh lo más
- 00:02:41llamativo posible diciéndole al usuario
- 00:02:43que no escriba letras que no escriba
- 00:02:46letras que escriba números pero no hay
- 00:02:47un sistema para impedir que el usuario
- 00:02:49lo haga eh Qué hacer en situaciones ante
- 00:02:54circunstancias como estas si has
- 00:02:57trabajado con otros lenguajes de
- 00:02:58programación con php por ejemplo es muy
- 00:03:00común usar condicionales que ejecutarán
- 00:03:03una acción un mensaje por ejemplo si
- 00:03:06alguno de esos errores ocurre si el
- 00:03:09servidor no contesta si se recibe un
- 00:03:11tipo de dato que no se espera etcétera
- 00:03:13etcétera son los errores más comunes y
- 00:03:16en Java también podríamos hacerlo de
- 00:03:18este modo creando un condicional y
- 00:03:21dentro por ejemplo otro tipo de
- 00:03:23condicionales switch Case con los
- 00:03:25distintos Case que serían para cada uno
- 00:03:28de los errores que se podrían producir
- 00:03:31eh pero cuando hablamos de Java existe
- 00:03:35una técnica mejor para tratar con
- 00:03:38circunstancias excepcionales que se
- 00:03:40puedan producir al ejecutarse un
- 00:03:42programa y es el uso de un grupo de
- 00:03:45clases que se denominan así
- 00:03:47exceptions las exceptions en este caso
- 00:03:50Recuerda que ya no estamos hablando de
- 00:03:52una palabra en inglés sino de el nombre
- 00:03:55de un grupo de clases de un lenguaje de
- 00:03:57programación así que por tanto las exion
- 00:04:00incluyen errores que pueden ser fatales
- 00:04:03para nuestro programa pero también otras
- 00:04:05situaciones excepcionales pues manejando
- 00:04:07estas exceptions podemos manejar los
- 00:04:10errores y posiblemente darles una
- 00:04:12solución cuando se produzca eh Por tanto
- 00:04:17Java cuenta con su propio sistema para
- 00:04:20el manejo de errores y condiciones
- 00:04:22excepcionales en la ejecución de
- 00:04:25programas una serie de características
- 00:04:28que realizan comprobaciones en tiempo de
- 00:04:30ejecución del programa y que utilizan
- 00:04:33este conjunto de clases exón con las que
- 00:04:36cuenta
- 00:04:38Java
- 00:04:40eh Para empezar cuando intentamos
- 00:04:42entender las exceptions en Java tenemos
- 00:04:45que adaptarnos a la terminología que
- 00:04:47usan terminología que aunque sea
- 00:04:50terminología Java está tomada de el
- 00:04:52inglés en este caso eh de los deportes
- 00:04:56usan los términos thrown Z o tirar
- 00:05:00cuando se produce una excepción y el
- 00:05:03término Cat capturar cuando la
- 00:05:06excepción es respondida por el programa
- 00:05:09Por tanto se produce una excepción
- 00:05:10cuando un programa Java trown lanza un
- 00:05:13tipo de error que es cogido que es
- 00:05:16cazado que es cult y neutralizado
- 00:05:19mediante el uso de estas clases
- 00:05:23exens cuando hablamos de clases en Java
- 00:05:26hablamos de su organización jerárquica y
- 00:05:30dependencia y dentro de la jerarquía de
- 00:05:33exón de las excepciones en La Cúspide se
- 00:05:37encuentra la clase thr wobble que es
- 00:05:40superclase de todos los errores y
- 00:05:42excepciones en Java y siempre que se
- 00:05:45produce un throne un lanzamiento de
- 00:05:47algún tipo de error o estación siempre
- 00:05:50se crea una instancia de esta clase trel
- 00:05:54que es la
- 00:05:57superclase superclase que tiene dos
- 00:05:59subclases la clase error y la clase
- 00:06:03exces las instancias de error suelen
- 00:06:06hacer referencia siempre a errores
- 00:06:08internos relacionados con la máquina
- 00:06:10virtual de Java con el entorno de
- 00:06:12ejecución errores bastante raros y sobre
- 00:06:16todo aunque son fatales en ocasiones no
- 00:06:18podemos hacer mucho para solucionarlos a
- 00:06:20través de nuestro código sin embargo la
- 00:06:23clase
- 00:06:24exón Sí es la más relevante para nuestro
- 00:06:27código de programación y de ahí que en
- 00:06:30Java cuando se habla de errores se le
- 00:06:32suele Llamar excepciones y no errores
- 00:06:35justo por estas dos clases a las que
- 00:06:37estamos haciendo referencia las
- 00:06:39subclases de exces a su vez se dividen
- 00:06:42en dos grandes grupos
- 00:06:45generales que aunque son muchas como
- 00:06:48vemos el grupo más importante se incluye
- 00:06:51dentro de la clase que es su clase de
- 00:06:54exion sobre todo la clase runtime excep
- 00:06:57que es la que aquí ponemos
- 00:07:00y dentro de ell se encuentran otras
- 00:07:02subclases que se usan mucho como Index
- 00:07:04bounds en fin tienen unos nombres como
- 00:07:07siempre compuestos veremos unos cuantos
- 00:07:10a lo largo de este víde tutorial pero
- 00:07:12aquí puedes ver una lista desde luego de
- 00:07:14nuevo en la documentación
- 00:07:17eh puedes acceder a información mucho
- 00:07:20más precisa Aquí vemos las subclases de
- 00:07:23extensión y entre ellas como decíamos
- 00:07:25runtime extensión que a su vez cuenta
- 00:07:28con otra eh otro grupo de
- 00:07:32subclases estas excepciones en tiempo de
- 00:07:35ejecución suelen producirse son las que
- 00:07:38se pueden solucionar de modo más
- 00:07:41sencillo ya que suelen deberse siempre A
- 00:07:43falta de eh consistencia en el código
- 00:07:47veremos algunos ejemplos pronto pero por
- 00:07:48ejemplo array Index of bounds se puede
- 00:07:51producir cuando señalamos por ejemplo
- 00:07:54que se busque dentro de una Ray un
- 00:07:56elemento que no existe es un error muy
- 00:07:58común vos algún ejemplo otro por ejemplo
- 00:08:01cuando se crea una variable que
- 00:08:03pertenece a un objeto que aún no se ha
- 00:08:07instanciado y por lo tanto no puede
- 00:08:12encontrarse pero eh los tipos de
- 00:08:15excepciones son muy variados las clases
- 00:08:18excepción primarias son parte del
- 00:08:20paquete jabang como podemos ver también
- 00:08:22aquí en esta información y se incluye
- 00:08:26dentro de ella TR ex y r time sesión
- 00:08:29pero eh muchos otros paquetes definen
- 00:08:32también sus propias excepciones y esas
- 00:08:35excepciones son usadas a través de la
- 00:08:37propia librería de sus clases eh Por
- 00:08:42ejemplo por poner un ejemplo el paquete
- 00:08:44Java io eh Define una clase estricción
- 00:08:48general propia que se llama así io
- 00:08:51excepción Recuerda que io hace
- 00:08:53referencia a input output y eh cuenta
- 00:08:57con subclases que se encuentran de este
- 00:08:58Dentro de este mismo paquete Java io
- 00:09:00pero también se pueden encontrar dentro
- 00:09:02de otros paquetes es la realidad en
- 00:09:04cuanto profundizamos los temas desde
- 00:09:07luego se complican y este de las
- 00:09:08excepciones que intenta dar respuesta a
- 00:09:11todas las posibles situaciones o
- 00:09:13problemas que puede acarrear un código
- 00:09:15hace que sean muy numerosas y que de
- 00:09:17nuevo para profundizar en ellas primero
- 00:09:19hay que entenderlas desde luego pero
- 00:09:21después hay que acceder a la información
- 00:09:24a la documentación para saber cuál usar
- 00:09:26Cuál es su sintaxis y demás no creo que
- 00:09:29a nadie se le ocurra intentar memorizar
- 00:09:32la cantidad enorme de excepciones de las
- 00:09:35que aquí vemos solo una
- 00:09:37parte Aunque es ahora cuando vamos
- 00:09:40verlas en profundidad ya hemos tenido
- 00:09:42que tratar con excepciones en lo que
- 00:09:44llevamos de curso y este tipo de errores
- 00:09:47tienen lugar cuando escribimos un
- 00:09:49programa Java que compila correctamente
- 00:09:52sin Mostrar ningún error pero que en el
- 00:09:55momento en el que lo ejecutamos se
- 00:09:57encuentra algún problema
- 00:09:59eh Por ejemplo un error muy común al
- 00:10:03programar y también de los más sencillos
- 00:10:05de solucionar es referirse a un elemento
- 00:10:08de un array que no existe como podemos
- 00:10:11ver en este ejemplo tenemos un array eh
- 00:10:15de strings llamado cursos que cuenta con
- 00:10:18tres strings y indicamos que se nos
- 00:10:21muestre en pantalla con el uso de
- 00:10:22printel cursos tres eh Como ya sabemos
- 00:10:27los elementos de un aray empiezan a
- 00:10:29contar desde cero por lo tanto aquí
- 00:10:30tenemos cursos cer cursos 1 y cursos dos
- 00:10:35cursos tres no existe Y aunque si
- 00:10:39compilamos se compila bien en el momento
- 00:10:41en el que ejecutamos este
- 00:10:48programa observa como nos aparece un
- 00:10:52error un error que hace referencia
- 00:10:55dentro del paquete Java lang a una de
- 00:10:58esas clases es que dijimos que se llama
- 00:11:01en este caso array Index out of bouns
- 00:11:04excession por eso el de andar leyendo
- 00:11:07los nombres de estas clases a veces es
- 00:11:09un lío pero es bastante explicativo lo
- 00:11:11que nos indica aquí es que se ha
- 00:11:13producido una excepción en el que el el
- 00:11:16índice del array que estamos utilizando
- 00:11:18está fuera de los límites de ese array
- 00:11:21recuerdo hace años cuando estudiaba arte
- 00:11:25que tenía una compañera que decía que
- 00:11:27los las pinturas neoclásicas que el
- 00:11:30título que tenían ya las explicaba y era
- 00:11:33cierto porque tenían títulos larguísimos
- 00:11:35en los que decía eh viriato agonizante
- 00:11:37rodeado por sus compañeros que juran
- 00:11:39venganza realmente ya explicaba todo lo
- 00:11:41que aparecía en el cuadro Pues con los
- 00:11:43nombres que se le da a estas clases
- 00:11:44prácticamente pasa lo mismo para Ros es
- 00:11:47un lío pero realmente resumen cuál es el
- 00:11:51problema que se ha producido en este
- 00:11:53caso como vemos nos indica que el índice
- 00:11:56de la Ray está fuera de los límites que
- 00:11:58se array
- 00:12:00permite Pues hay cientos de de este tipo
- 00:12:03de excepciones en Java muchas como esta
- 00:12:07excepción array indican un problema que
- 00:12:10puede ser arreglado con un simple cambio
- 00:12:12de código tendríamos que cambiar aquí 3
- 00:12:14por 2 y solucionado el problema Son por
- 00:12:17tanto comparables errores de compilación
- 00:12:20una vez que lo hayamos corregido la
- 00:12:22situación ya eh No volverá a producirse
- 00:12:25y nuestro programa debería ejecutarse de
- 00:12:27modo ya correcto pero existen otras
- 00:12:30excepciones eh Como decíamos hace un
- 00:12:31momento que tienen que ser tratadas eh
- 00:12:33cada vez que se ejecute un programa
- 00:12:35porque no sabemos Eh qué es lo que se
- 00:12:38puede producir cuando se lleva a cabo la
- 00:12:40ejecución decíamos antes El ejemplo de
- 00:12:43Pues que tenga que escribir algo el
- 00:12:45usuario y que escriba e algo que no debe
- 00:12:49escribirse pues hay que ver De qué modo
- 00:12:51las excepciones nos permiten solucionar
- 00:12:53esos problemas y para ello necesitamos
- 00:12:56usar esas palabras clave a las que
- 00:12:59hacíamos referencia en
- 00:13:02Java y para esas excepciones que tienen
- 00:13:06que ser tratadas Cada vez que un
- 00:13:07programa se ejecuta vamos a poder
- 00:13:10hacerlo usando cinco nuevas palabras
- 00:13:13clave que aquí vemos try Catch Finally
- 00:13:18thr y
- 00:13:24th veamos Cómo usar un bloque TR Catch
- 00:13:27para tratar con es iciones que no
- 00:13:29podemos arreglar simplemente modificando
- 00:13:32el código lo vemos en un ejemplo
- 00:13:35práctico en el que vamos a crear una
- 00:13:36pequeña aplicación a la que llamaremos
- 00:13:39por ejemplo
- 00:13:41sumador
- 00:13:42eh a esta aplicación le Tendremos que
- 00:13:45pasar uno o varios argumentos a través
- 00:13:48de la línea de comando cosa que ya
- 00:13:51hicimos en alguna otra ocasión y la
- 00:13:53aplicación lo que va a hacer es sumarlos
- 00:13:56y mostrarnos el eh total eh Como todos
- 00:14:00los argumentos de línea de comando en
- 00:14:02Java como ya sabemos son representados
- 00:14:04por String eh el programa tiene que
- 00:14:07convertirlos en números decimales antes
- 00:14:10de eh poder eh añadirlos aquí lo hacemos
- 00:14:14mediante el uso del método parse float
- 00:14:17convertimos cada uno de los argumentos
- 00:14:19que se pase eh en un número
- 00:14:23decimal en fin una aplicación que estoy
- 00:14:26seguro a estas alturas no hay que
- 00:14:27explicar a nadie simplemente hacemos un
- 00:14:30Loop y eh por cada vez que se itere ese
- 00:14:34Loop se irá tomando uno de los valores
- 00:14:36de El argumento al ir aumentando en uno
- 00:14:40cada vez lo convertimos a un decimal y
- 00:14:43lo añadimos lo sumamos al valor que
- 00:14:46tenga la variable suma que empieza
- 00:14:48siendo cero e irá añadiendo sumando
- 00:14:51todos los argumentos que se
- 00:14:54pasen para Añadir argumentos ya sabemos
- 00:14:57desde eh
- 00:14:59Run set project configuration en
- 00:15:03customize eh aquí le indicamos como
- 00:15:07clase principal la que estemos
- 00:15:08utilizando y ahora en argumentos vamos a
- 00:15:10empezar poniéndole pues cualquier número
- 00:15:12vamos a poner por ejemplo los números
- 00:15:14que ya están ahí los dejamos y pulsamos
- 00:15:18Ok y
- 00:15:21ejecutamos la
- 00:15:23aplicación y vemos cómo lleva a cabo la
- 00:15:26suma y aparece lo que aquí indicamos en
- 00:15:28printel este número estos números suman
- 00:15:30un total de y aquí el valor que tenga en
- 00:15:32ese momento sum que es la suma de todos
- 00:15:35los argumentos que se han
- 00:15:37pasado puedes seguir poniendo valores
- 00:15:40numéricos como argumentos las veces que
- 00:15:42quieras y verás como nos da un resultado
- 00:15:46correcto siempre así que podríamos que
- 00:15:49preguntarnos que para qué necesitamos
- 00:15:51entonces las excepciones para ver para
- 00:15:53qué sirven vamos a cambiar los
- 00:15:55argumentos
- 00:15:59Y imaginémonos que cuando vamos a poner
- 00:16:01los argumentos no nos damos de cuenta y
- 00:16:04creemos Que aquí hay que poner los
- 00:16:05argumentos separados por comas y ponemos
- 00:16:0723 coma 54 coma eh 34 en este caso aquí
- 00:16:13no nos pasa los números sino lo que va a
- 00:16:15pasar es Recuerda es un String que es 23
- 00:16:17coma cuando intente convertir este 23
- 00:16:20coma en un número no va a poder hacerlo
- 00:16:23así que vamos a ver con estos argumentos
- 00:16:25qué es lo que ocurre cuando eh
- 00:16:28ejecutamos la aplicación y observa como
- 00:16:32aquí nos aparece una nueva
- 00:16:34excepción y en este caso nos dice que la
- 00:16:37estación es number format exens input
- 00:16:41Stream 23 coma no puede
- 00:16:46hacerlo justo porque no es un Stream que
- 00:16:49pueda convertirse en un
- 00:16:52número este tipo de mensajes son muy
- 00:16:55informativos nos da muchísima
- 00:16:56información nos indican Cuál es la exón
- 00:16:59que se produce nos indican incluso dónde
- 00:17:02En qué parte de Stream se está
- 00:17:04produciendo esto lo escribimos
- 00:17:06directamente nosotros y lo podemos
- 00:17:07cambiar pero imagínate lo vimos ya
- 00:17:09también en el curso có podíamos
- 00:17:10cambiarlo que fuera una caja de entrada
- 00:17:13de texto un área de texto donde tuviera
- 00:17:15que escribir el usuario y que cuando
- 00:17:17escribiera pues pusiera también así en
- 00:17:18lugar de poner un número o que pusiera
- 00:17:205x o lo que fuera iba a tener el mismo
- 00:17:23error Cómo podemos entonces eh tratar
- 00:17:26con ese error que no podemos solucionar
- 00:17:28directamente en el código ya que aquí
- 00:17:31como vemos no podemos modificar código
- 00:17:32para que este problema no se produzca
- 00:17:35porque va a depender de los argumentos
- 00:17:37que se le pasen a nuestro
- 00:17:41método pues Tendremos que solucionarlo
- 00:17:44mediante el uso de el bloque try Catch
- 00:17:49en el cual va a tener que solucionar una
- 00:17:52excepción que es la sección que aquí nos
- 00:17:53indica vamos a tener que darle una
- 00:17:56respuesta por si se produce esta
- 00:17:59excepción que aquí vemos number format
- 00:18:03ex vemos aquí en pantalla la sintaxis de
- 00:18:08una
- 00:18:08eh un bloque try Catch de declaración la
- 00:18:12parte try que son las declaraciones que
- 00:18:15pueden causar la excepción si no causan
- 00:18:16la excepción se Ejecutan Sas y continúa
- 00:18:19el programa pero si se lanza la
- 00:18:22excepción si se produce esa excepción
- 00:18:26Entonces tenemos que utilizar el Catch
- 00:18:29al que hay que pasarle la posible
- 00:18:31excepción y tenemos que indicar aquí con
- 00:18:34una o varias declaraciones Qué es lo que
- 00:18:36tiene que hacer el programa cuando se
- 00:18:38produce esa excepción esta como vemos
- 00:18:40aquí es la sintaxis de un try
- 00:18:44Catch y el objeto extension que aparece
- 00:18:49en la declaración Catch puede ser una de
- 00:18:53dos cosas bien la clase de la excepción
- 00:18:56que puede ocurrir o bien una de clase
- 00:18:59que englobe varias excepciones
- 00:19:00diferentes que puedan
- 00:19:03ocurrir lo vemos en la aplicación
- 00:19:07sumador vamos a modificarla en la cual
- 00:19:10el try que como decimos es el que puede
- 00:19:13lanzar esa excepción es el parse float
- 00:19:16que convierte un String en número puede
- 00:19:19convertirlo si es un número como vimos
- 00:19:21que ocurría Pero puede eh dar un error
- 00:19:24provocar una excepción si lo que se le
- 00:19:25pasa como argumento no se puede
- 00:19:27convertir y Entonces cuando tiene que
- 00:19:29saltar el Catch en la otra parte de el
- 00:19:33código vamos a verlo y en este caso lo
- 00:19:37que tendremos que usar es el number
- 00:19:39format exception que veíamos que era el
- 00:19:41que nos daban el mensaje de excepción
- 00:19:44cuando Eh no funcionaba
- 00:19:47bien aquí podemos ver esta nueva versión
- 00:19:49de sumador al que vamos a llamar así
- 00:19:51nuevo sumador para guardar también la
- 00:19:53otra observa como esta parte sigue
- 00:19:55siendo exactamente Igual hasta donde
- 00:19:58inicia el for int que por lo tanto
- 00:20:01también va a recuperar cada uno de los
- 00:20:04argumentos que se le pase pero ahora
- 00:20:06dentro es donde incluimos el try Catch
- 00:20:09dentro del try ponemos el mismo código
- 00:20:11que poníamos antes que vaya añadiendo
- 00:20:14sumando cada uno de los argumentos y
- 00:20:17guardándolo en la variable zoom pero
- 00:20:20ahora como vemos añadimos también el
- 00:20:22Catch y como vemos le pasamos como eh
- 00:20:25objeto number format exens que Recuerda
- 00:20:29que es la excepción que nos había
- 00:20:30lanzado antes cuando nos daba el error
- 00:20:34Así que lo que hacemos Es que si se
- 00:20:37produce la excepción Entonces que e eh
- 00:20:42ponga en pantalla un mensaje diciendo
- 00:20:45que lo que se está pasando ahora como
- 00:20:47argumento I no es un
- 00:20:50número y eh después lo que hacemos Es
- 00:20:54simplemente imprimir el valor observa qu
- 00:20:56tal como está esto se encuentra dentro
- 00:20:57de un Loop por lo tanto esta aplicación
- 00:21:00tal como está H va a sumar todos los eh
- 00:21:05argumentos que se le pasen que se puedan
- 00:21:07convertir a números y va a devolver un
- 00:21:10mensaje que es el que indicamos aquí con
- 00:21:13todos aquellos argumentos que no se
- 00:21:14puedan convertir pero suma los otros
- 00:21:16porque es lo que indicamos aquí así que
- 00:21:18por lo tanto Aquí vemos un ejemplo de
- 00:21:20uso de try Catch y como le pasamos el
- 00:21:24objeto excep y como lo indicamos en una
- 00:21:26declaración qué es lo que tiene que
- 00:21:30hacer
- 00:21:32eh vamos a la configuración y vamos aquí
- 00:21:36elegir esta nueva clase nuevo sumador y
- 00:21:39vamos a pasarle por ejemplo para que
- 00:21:41quede más claro número sencillos vamos a
- 00:21:43poner por ejemplo cinco o seis da igual
- 00:21:45eh cuatro vamos a poner aquí eh 7a Como
- 00:21:50vemos 6 y cuatro son argumentos que se
- 00:21:52pueden convertir a número sin problema
- 00:21:537a no Así que con esto así lo guardamos
- 00:21:57y vamos a ejecutar a ver que
- 00:21:59ocurre pulsamos aquí para que se ejecute
- 00:22:03y observa como nos devuelve 7a no es un
- 00:22:06número por lo tanto es cuando se produce
- 00:22:10se lanza la excepción y por tanto Catch
- 00:22:12hace que se muestre pero sin embargo con
- 00:22:14los otros dos argumentos sí que se pasan
- 00:22:17y como vemos aparece aquí estos números
- 00:22:18suman un total de 10 que son los otros
- 00:22:20dos números que pusimos 6 y 4 creo que
- 00:22:23era así que por lo tanto vemos aquí un
- 00:22:25ejemplo práctico de El uso de try Catch
- 00:22:30y entender bien el objeto que hay que
- 00:22:33pasar dentro del Catch que coincide con
- 00:22:35la excepción que puede saltar con
- 00:22:39el la declaración o declaraciones que
- 00:22:41están en
- 00:22:44try así que de este modo lo que hacemos
- 00:22:47Es que la excepción sea manejada dentro
- 00:22:50de la propia clase y por tanto el
- 00:22:52interprete Java no nos va a mostrar el
- 00:22:55error y podemos en muchas ocasiones
- 00:22:58tratar con problemas sobre todo
- 00:22:59relacionados con entradas de usuario con
- 00:23:02la entrada de tipo de datos que no se
- 00:23:04esperan dentro de la aplicación usando
- 00:23:06este tipo de bloques try Catch
- 00:23:09eh pero los bloques try Catch pueden ser
- 00:23:13usados para manejar diferentes tipos de
- 00:23:16excepciones Incluso si son lanzadas por
- 00:23:19declaraciones diferentes no tiene por
- 00:23:22qué haber un único Catch podemos hacer
- 00:23:24tantos Catch como excepciones queramos
- 00:23:27lanzar
- 00:23:29eh vamos a crear una nueva aplicación
- 00:23:31muy sencilla a la que vamos a llamar
- 00:23:34División y que va a tomar dos argumentos
- 00:23:37de tipo integer que se le pasaremos a
- 00:23:40través de la línea de comando como en el
- 00:23:42anterior ejemplo y los vamos a usar para
- 00:23:44llevar a cabo eh una
- 00:23:48división pero a diferencia del anterior
- 00:23:51ejemplo esta aplicación va a tener que
- 00:23:54poder tratar con dos problemas
- 00:23:56potenciales en las entradas de de los
- 00:23:58usuarios igual que en el otro eh ejemplo
- 00:24:01que los argumentos eh sean no numéricos
- 00:24:05y por tanto no se puedan convertir a eh
- 00:24:08números pero también que no se pueda
- 00:24:10dividir por cer0 que es el segundo de
- 00:24:13los problemas a los que tenemos que dar
- 00:24:14una
- 00:24:16respuesta esta aplicación que a estas
- 00:24:19alturas Eh pues tiene muy poco que
- 00:24:21explicar empezamos con un condicional en
- 00:24:23el que comprobamos que el número de
- 00:24:26argumentos que se le pasa sea dos para
- 00:24:28poder llevar a cabo la división tienen
- 00:24:29que ser dos Ni más ni menos si es así
- 00:24:32creamos una variable llamada eh
- 00:24:35resultado de tipo integer y le damos un
- 00:24:37valor de cer0 y ahora en el try en esta
- 00:24:40parte de aquí es donde llevamos a cabo
- 00:24:42la división convertimos los dos
- 00:24:45argumentos pasados a enteros comparse
- 00:24:48int y los dividimos y posteriormente
- 00:24:52hacemos que se muestre en pantalla el
- 00:24:54resultado Ni más ni
- 00:24:56menos y configuramos dos excepciones dos
- 00:25:00Catch uno como en el anterior ejemplo si
- 00:25:03lo que pasa el usuario no se puede
- 00:25:05convertir a número pero otra por eso
- 00:25:08usamos integer Porque si usáramos float
- 00:25:10se podría dividir por cero nos
- 00:25:12devolvería infinito Pero si son integer
- 00:25:15no permite y devuelve otro tipo de
- 00:25:17sección que se llama by cer que impide
- 00:25:20dividir por C Que es lo que hacemos en
- 00:25:21este segundo
- 00:25:23ejemplo Así que como en el ejemplo
- 00:25:26anterior si pasamos uno de los dos
- 00:25:28argumentos que no sea convertible a un
- 00:25:30entero nos devolverá la primera
- 00:25:33excepción pero aquí ahora vemos la
- 00:25:35segunda que como vemos es una aritmetic
- 00:25:37excepción vamos a empezar por e quitar
- 00:25:40este trozo de código voy a
- 00:25:43comentarlo para poder mantenerlo sin
- 00:25:46problema y dentro de un momento lo
- 00:25:47volvemos a utilizar a ver creo que tiene
- 00:25:50que ser a ver eh Pues aquí
- 00:25:55esto antes de la llave de cierre tiene
- 00:25:58que ser después desde luego así que así
- 00:26:01sí Ahora lo mantenemos pero eh vamos a
- 00:26:04probar pasándole
- 00:26:09eh Como clase principal ponemos división
- 00:26:11la que estamos usando y le pasamos como
- 00:26:13vemos como segundo argumento un cero que
- 00:26:16es lo que no se puede hacer en este
- 00:26:18momento este Catch no está activo por lo
- 00:26:20tanto vamos a ver lo que ocurre si
- 00:26:22ejecutamos la aplicación así observa
- 00:26:25como nos devuelve el error y como decí
- 00:26:28diamos la excepción aritmetic ex by zer
- 00:26:33by Zero que es la que vamos a tener que
- 00:26:36utilizar que es la que utilizamos aquí
- 00:26:38como puedes ver para crear nuestro
- 00:26:44Catch podíamos hacer Igual que hicimos
- 00:26:47con la anterior pasar un String pues
- 00:26:49diciendo no se puede dividir por cero
- 00:26:52por ejemplo pero también podemos
- 00:26:54utilizar como hacemos en este caso y
- 00:26:56aquí lo vemos el método get
- 00:26:59message que nos permite recuperar el
- 00:27:02error que nos devuelve el objeto que
- 00:27:04tenemos aquí y por tanto por eso ponemos
- 00:27:07e get message con lo cual nos va a
- 00:27:11devolver el mensaje de El error error y
- 00:27:13nos pondrá en este caso el error que
- 00:27:14vemos aquí por cero cuando ahora
- 00:27:18sea cogido cuando se ha cazado por
- 00:27:22nuestro Catch es
- 00:27:25error si guardamos si lo ejecutamos con
- 00:27:27esta nueva versión observa como ahora
- 00:27:30aparece
- 00:27:31el mensaje que tenemos aquí porque se
- 00:27:35dispara este segundo Catch error y get
- 00:27:38message nos devuelve el mensaje del tipo
- 00:27:41de error del que estamos hablando que en
- 00:27:42este caso como decíamos es
- 00:27:44by que es el que
- 00:27:48aparece cuando estamos tratando con
- 00:27:50múltiples excepciones usando try y Catch
- 00:27:54seguro que va a haber ocasiones en las
- 00:27:55que queramos que el programa haga algo
- 00:27:57al fin del bloque tanto si ocurre una
- 00:28:00excepción como si no pues podemos
- 00:28:02hacerlo usando lo que se denomina un
- 00:28:04bloque try Catch Finally que toma la
- 00:28:09siguiente forma que puedes ver aquí en
- 00:28:13pantalla
- 00:28:15eh la declaración o declaraciones que se
- 00:28:17encuentran dentro de la sección Finally
- 00:28:21se Ejecutan después de todo lo que
- 00:28:23incluye el bloque ocurra o no ocurra la
- 00:28:26excepción esto puede ser útil en muchas
- 00:28:28ocasiones por poner un ejemplo cuando el
- 00:28:31eh programa quiere acceder a datos desde
- 00:28:33un archivo en el disco eh se pueden
- 00:28:36producir excepciones por distintas
- 00:28:38causas que el archivo Puede que no
- 00:28:40exista puede que se produzca un error de
- 00:28:42disco Eh puede que se encuentre en un
- 00:28:44formato que no sea compatible etcétera
- 00:28:47Pero si las declaraciones para leer el
- 00:28:49disco están en la sección try y los
- 00:28:51errores son manejados en las distintas
- 00:28:54secciones Catch que incluyamos podemos
- 00:28:57asegurarnos que el archivo se va a
- 00:28:59cerrar siempre poniendo la sección
- 00:29:02Finally ese cierre de el archivo Así
- 00:29:06tanto se produce la excepción como si no
- 00:29:08nos aseguramos que el archivo acabará
- 00:29:13cerrado eh podemos verlo en un ejemplo
- 00:29:15simplemente ampliando el try Catch que
- 00:29:18teníamos antes poniendo al final un una
- 00:29:21nueva sección dentro del el bloque
- 00:29:23Finally en la cual podemos Pues por
- 00:29:26ejemplo poner que se imprima un mensaje
- 00:29:28y este mensaje se va a imprimir tanto si
- 00:29:31se produce la excepción como si no se
- 00:29:33produce es la función que tiene puedes
- 00:29:36probarlo pasándole datos que no
- 00:29:38provoquen error o que provoquen error y
- 00:29:40veremos como tanto un caso como en otro
- 00:29:43se imprimirá en pantalla el mensaje que
- 00:29:45se encuentra dentro de final y este es
- 00:29:49el uso que tiene eh este tipo de bloque
- 00:29:51tra Catch
- 00:29:53Finally eh veamos ahora el mecanismo que
- 00:29:57podemos usar para para lanzar
- 00:29:58excepciones Recuerda que cuando hablamos
- 00:30:01de lanzar nos referimos al término throw
- 00:30:03o throws
- 00:30:05Eh Pues cuando usamos clases que forman
- 00:30:07parte de la librería de clases de Java
- 00:30:09en ocasiones podemos ver que nos lanzan
- 00:30:12mensajes como el que aquí vemos mas be c
- 00:30:16o decare to be
- 00:30:18thr que podríamos Traducir por algo así
- 00:30:21como debe ser cogido o declarado para
- 00:30:24ser lanzado son las opciones que
- 00:30:27tendremos dentro de nuestro método
- 00:30:30dentro de nuestra clase pero para
- 00:30:31empezar entender cómo se llega hasta
- 00:30:33aquí estamos hablando de una clase de la
- 00:30:36librería de Java en la cual se han
- 00:30:38definido una serie de excepciones Y en
- 00:30:41este caso se indica que eh tiene que
- 00:30:45lanzar a cualquier clase que llame a un
- 00:30:47método de esa clase tiene que lanzarle
- 00:30:50una excepción de este tipo de ahí Que
- 00:30:52aparezca lo de must be cod o decare to
- 00:30:55be thrown eh Como tantas otras ocasiones
- 00:30:58es bastante más sencillo de lo que puede
- 00:31:00parecer en un principio lo que nos
- 00:31:03indica con esto es que el método al que
- 00:31:05estamos llamando que estamos intentando
- 00:31:07usar nos lanza una excepción Así que eh
- 00:31:12eso tiene que estar determinado en la
- 00:31:14clase veremos después como nosotros
- 00:31:16podemos determinar que nuestra clase
- 00:31:18también Lance este tipo de excepciones
- 00:31:20pero de momento no la estamos lanzando
- 00:31:22la estamos recibiendo un método de una
- 00:31:25clase al que llamamos nos lanza esta
- 00:31:27excepción qué es lo que podemos hacer
- 00:31:29nosotros cuando recibimos esta
- 00:31:33excepción bien podemos manejar la
- 00:31:36excepción mediante el uso de un bloque
- 00:31:38try Catch como acabamos de hacer hace un
- 00:31:40momento bien eh podemos rebotar lo que
- 00:31:44nos lanzan y a su vez lanzarlo nosotros
- 00:31:46usando trown veremos ahora cómo hacemos
- 00:31:49y por tanto lo pasaríamos al método eh
- 00:31:52que llamara a nuestra clase al método de
- 00:31:55nuestra clase por tanto eh podemos
- 00:31:58lanzar algo que nos llega lanzado o
- 00:32:00podemos hacer las dos cosas podemos
- 00:32:03gestionarlo mediante un try Catch pero
- 00:32:04después también hacer que sea lanzado
- 00:32:07cuando cualquier otro otra clase llame a
- 00:32:10el método que estamos creando nosotros
- 00:32:12Así que las posibilidades son esas
- 00:32:14gestionarlo con un trycatch lanzarlo
- 00:32:16otra vez con un trown o hacer las dos
- 00:32:19cosas un trycatch y un
- 00:32:23thrown vamos a ver nuestro código Cómo
- 00:32:25podemos hacer que además de eh llevar a
- 00:32:29cabo con el try Catch eh el la respuesta
- 00:32:34cuando se produce un error podemos
- 00:32:36también lanzar de nuevo ese error el
- 00:32:39sentido que tiene el uso de trow como
- 00:32:41vamos ver ahora es si esta clase
- 00:32:45contiene métodos que pueden ser llamados
- 00:32:46por otras clases utilizando este trow e
- 00:32:49cuando se llame a el método le va a
- 00:32:52pasar siempre
- 00:32:53eh le va a lanzar de nuevo la excepción
- 00:32:57para ello aquí lo vemos control e nos va
- 00:33:00a HM hacer que Lance en cada momento la
- 00:33:04excepción que se dispara podemos ponerlo
- 00:33:08en alguno o en todos los Catch y esto
- 00:33:11Como creo que tiene que estar Claro si
- 00:33:13vemos hasta ahora solo se va a ejecutar
- 00:33:16si se produce la excepción si por tanto
- 00:33:18el try cuando se lleva a cabo el intento
- 00:33:22de ejecutar el código da error y
- 00:33:25entonces sea un cacho sea el otro nos
- 00:33:29enviará el true no solo el mensaje sino
- 00:33:31que también envía el
- 00:33:33error veamos primero el código en
- 00:33:38funcionamiento observa como al
- 00:33:41ejecutarlo seguimos teniendo los mismos
- 00:33:42datos en el argumento lo primero que
- 00:33:45hace es Mostrar lo que incluimos en este
- 00:33:49Catch pero observa como después lanza la
- 00:33:53excepción en esta parte que aquí vemos
- 00:33:58de momento esto pues como estamos
- 00:33:59ejecutando el código Eh puede que no
- 00:34:02tenga mucho sentido Pero recuerda que el
- 00:34:05objetivo es que eh si esta clase que
- 00:34:08estamos creando tiene métodos que son
- 00:34:09llamados por otras clases pues queremos
- 00:34:12que cuando eh otra clase llame a este
- 00:34:15método si se produce la excepción que no
- 00:34:17solo trate con la excepción sino que
- 00:34:19también la Lance e informe a la clase
- 00:34:23que llama al método de que se ha
- 00:34:25producido este error en concreto esto es
- 00:34:28muy importante en distintas ocasiones
- 00:34:29desde luego ya tienes que entender que
- 00:34:31si los datos que tuviéramos
- 00:34:34aquí estuvieran correctos y por tanto no
- 00:34:37se produjera el error
- 00:34:41Bueno si aquí en vez de cero pues
- 00:34:43ponemos cualquier otro número cuatro por
- 00:34:50ejemplo no se produce ni el Catch ni se
- 00:34:53produce el true no lo lanza porque no
- 00:34:55hay excepción esto simplemente es cuando
- 00:34:58queremos que el código eh trate mediante
- 00:35:02el Catch con eh la excepción que se
- 00:35:04produce pero que también la Lance a
- 00:35:07cualquier otro método que llame a este
- 00:35:09método para que tenga información de
- 00:35:11cuál es el error que se está
- 00:35:14produciendo imagínate en un ejemplo
- 00:35:16concreto que tengamos un programa que
- 00:35:19chequea una tarjeta de crédito y
- 00:35:23eh llama a un a una clase que se llama
- 00:35:27check database para llevar a cabo esa
- 00:35:30comprobación eh Cuando check database
- 00:35:33lleva a cabo la comprobación puede que
- 00:35:35funcione correctamente pero que sin
- 00:35:36embargo eh lo que falle sea por ejemplo
- 00:35:39la conexión con el servidor del lugar
- 00:35:42donde se encuentra la tarjeta de crédito
- 00:35:44si eh tenemos en check database el Catch
- 00:35:48para que trate con ese problema pues lo
- 00:35:49soluciona pero no informa a la clase que
- 00:35:52llama al método que es lo que ha
- 00:35:54ocurrido para que se haya producido ese
- 00:35:57error por tanto eh puede ser importante
- 00:35:59que un método una clase no solo trate
- 00:36:02con una excepción sino que también la
- 00:36:04Lance Y eso es lo que tiene sentido
- 00:36:06cuando usamos trow eh Como lo que
- 00:36:09estamos haciendo en este
- 00:36:11ejemplo la otra palabra clave que
- 00:36:14tenemos que entender es la palabra
- 00:36:16throws y es la que va a permitir que un
- 00:36:19método pueda ignorar totalmente una
- 00:36:22excepción que le es lanzada por otro
- 00:36:25método al que llama así que por lo tanto
- 00:36:28eh Cuando un método de una clase Llama a
- 00:36:32otro método que le lanza una excepción
- 00:36:35eh lo que puede hacer ese método es
- 00:36:37ignorar esa llamada a la excepción eh
- 00:36:40incluyendo en su eh definición thrones a
- 00:36:44esa excepción en
- 00:36:46concreto por tanto ese método les
- 00:36:49lanzada una excepción que a su vez él
- 00:36:52lanza a otro método que lo llame y sería
- 00:36:55ese otro método el encargado de tratar
- 00:36:57con excepción o hacer exactamente lo
- 00:36:59mismo lanzarlo también a el siguiente
- 00:37:03método así que por lo tanto es posible
- 00:37:05también ignorar eh excepciones mediante
- 00:37:08el uso de
- 00:37:10thrs
- 00:37:13eh aquí vemos un ejemplo de sintaxis de
- 00:37:16código utilizando thrones que en un
- 00:37:19momento veremos en un ejemplo práctico
- 00:37:21completo pero de momento para entender a
- 00:37:23qué nos referimos como vemos aquí este
- 00:37:26método load URL
- 00:37:29eh utiliza en su definición throws con
- 00:37:34lo cual Aunque llame a un método que le
- 00:37:37envíe un una excepción mal format URL
- 00:37:41extension no va a tratar con ella no
- 00:37:44tenemos que hacer referencia ni con
- 00:37:45trycatch ni con TR ni con nada dentro de
- 00:37:47su código automáticamente con trow en su
- 00:37:51definición lo pasará se lo lanzará a
- 00:37:54cualquier otro método que lo llame a él
- 00:38:01veamos Lu un ejemplo práctico en el que
- 00:38:03una clase en sus constructors usa
- 00:38:06thrones para lanzar sin tener que tratar
- 00:38:10eh para nada con esas excepciones y
- 00:38:13lanzarlo a el método que va a llamar a
- 00:38:15sus constructores
- 00:38:17eh vamos en este taller de trabajo
- 00:38:20elaborar un par de clases la primera de
- 00:38:23ellas será la encargada de lanzar a la
- 00:38:26otra el aviso sobre un error que haya
- 00:38:29tenido lugar esta primera clase la vamos
- 00:38:32a llamar página inicial y es donde
- 00:38:35crearemos la base para un catálogo
- 00:38:38online y eh posteriormente una segunda
- 00:38:41clase a la que llamaremos página
- 00:38:43catálogo que usará objetos de esta clase
- 00:38:45página inicial para mostrar la
- 00:38:49información vamos a empezar importando
- 00:38:52el paquete
- 00:38:53javanet ya que como decíamos Aquí vamos
- 00:38:56a crear la base para la información de
- 00:38:59páginas web y una uno de las variables
- 00:39:03va a ser un objeto de la clase URL por
- 00:39:07lo tanto necesitamos importar el paquete
- 00:39:12javanet eh continuamos creando la clase
- 00:39:15y ahora dentro de la clase en primer
- 00:39:17lugar vamos a crear las tres variables
- 00:39:20que contendrán la información que eh se
- 00:39:23mostrará para cada página
- 00:39:27se trata de dos variables de tipo String
- 00:39:30y una de tipo URL como eh dijimos eh en
- 00:39:35categoría le damos un valor por defecto
- 00:39:37como porque como veremos ahora no va a
- 00:39:39ser obligatorio y ahora dentro de esta
- 00:39:41clase lo que vamos a hacer es crear dos
- 00:39:44constructors que son los que van a
- 00:39:46permitir eh crear cada una de las
- 00:39:49páginas con información desde la eh
- 00:39:53página catálogo que es la que
- 00:39:54construiremos en un momento
- 00:39:58Así que
- 00:40:00ponemos la firma para el primero de los
- 00:40:04constructors en el que como vemos
- 00:40:06pasamos de las tres variables Solo dos
- 00:40:09el nombre del propietario y la dirección
- 00:40:13la variable URL este no contiene la
- 00:40:16categoría pero ahora como cualquier
- 00:40:19clase que cree objetos
- 00:40:21URL esta página inicio tiene que tratar
- 00:40:24con las excepciones marf
- 00:40:28URL excep de la que ya hablamos y puedo
- 00:40:31hacerlo como ya sabemos También bien un
- 00:40:33bloque trycatch o puede declarar la
- 00:40:36excepción en la firma y de este modo
- 00:40:39ignorar esa excepción y pasársela a la
- 00:40:42clase que llame a sus métodos que es
- 00:40:44justo lo que vamos a hacer ahora así que
- 00:40:46por lo tanto tanto en este constructor
- 00:40:49como en el otro vamos tener que utilizar
- 00:40:52thrones como dijimos hace un momento
- 00:40:58vamos a colocar en otra línea para que
- 00:41:00se vea completo pero recuerda que va
- 00:41:03dentro de la firma por tanto antes de
- 00:41:05las llaves de apertura justo después de
- 00:41:07que cerramos los paréntesis de los
- 00:41:09parámetros
- 00:41:11escribimos el TR pasando el nombre podía
- 00:41:16ser más de una también excepción en este
- 00:41:18caso es esta
- 00:41:19excepción la que queremos que
- 00:41:24Lance y ahora el contenido sencillo las
- 00:41:27declaraciones para hacer en
- 00:41:30propietario lo que se pase como
- 00:41:32parámetro cuando se llama el constructor
- 00:41:34la variable de prioritario y en
- 00:41:36dirección de la URL dirección Así que
- 00:41:40simplemente esto como vemos y tenemos el
- 00:41:43primer constructor creamos ahora el
- 00:41:46segundo constructor que simplemente toma
- 00:41:48la información ya recogida en el primero
- 00:41:51y le añade categoría como ya viemos
- 00:41:54tambén en su momento que se podía hacer
- 00:41:57pero también vamos a tener que poner en
- 00:41:59ese constructor el trones para que Lance
- 00:42:03la
- 00:42:05excepción queé Tenemos aquí y como vemos
- 00:42:09lo que se hace aparte de
- 00:42:11usar los que ya teníamos en el anterior
- 00:42:14constructor le añadimos categoría con
- 00:42:17esto puede llamarse a esta clase tanto
- 00:42:21pasando dos parámetros el propietario y
- 00:42:25la url Us and tres se incluida también
- 00:42:28la categoría el resto como vemos
- 00:42:30Exactamente igual y lo que nos interesa
- 00:42:32el uso de
- 00:42:36trs vemos por tanto una clase que
- 00:42:39utiliza objetos URL sin necesidad de eh
- 00:42:44crear un TR Catch para eh tratar con la
- 00:42:47excepción mal formet URL exón porque
- 00:42:50mediante el uso de trow lo va a lanzar y
- 00:42:52se lo pasa a la clase que llame a los
- 00:42:55métodos en este caso los constructors de
- 00:42:58esta clase Así que con esto tenemos
- 00:43:00nuestra primera clase creada vamos ahora
- 00:43:03a crear la clase página catálogo
- 00:43:07eh clase en la que para empezar
- 00:43:10importamos el paquete Java net y ahora
- 00:43:13creamos la estructura para la clase y
- 00:43:16para el método
- 00:43:20Main y ahora dentro de main lo primero
- 00:43:23que vamos a hacer es crear un arr de
- 00:43:25objetos página inicial cada uno de ellos
- 00:43:29será el de los datos de una página Así
- 00:43:32que creamos el eh array de objetos vamos
- 00:43:37a hacer que sean cinco podía ser el
- 00:43:39número que quisiéramos
- 00:43:42y ahora vamos a utilizar el bloque try
- 00:43:46Catch en el try que será donde
- 00:43:49eh creemos cada uno de los objetos de la
- 00:43:52clase página inicial y el Catch que será
- 00:43:55el que nos permita
- 00:43:58recoger la excepción que puede ser
- 00:44:01lanzada por la clase página inicial Así
- 00:44:05que aquí tenemos el try Catch en el cual
- 00:44:08en el CCH ya ponemos que la excepción es
- 00:44:11malformed URL excepción como
- 00:44:15sabemos y ahora en el trke como decíamos
- 00:44:19lo que vamos a ir haciendo es Llamando
- 00:44:21al constructor de página inicial
- 00:44:24pasándole los tres argumentos o los dos
- 00:44:27argumentos que decíamos lo vemos en el
- 00:44:30primero catálogo cero New página inicial
- 00:44:33y pasamos el nombre Eh pasamos la
- 00:44:36dirección Pero Observa que no como un
- 00:44:38objeto URL sino que es como un String eh
- 00:44:42cuando el constructor se ejecute de
- 00:44:44página inicial será el que tenga que
- 00:44:47comprobar mediante trow si esa URL que
- 00:44:50se pasa como Stream se puede convertir
- 00:44:52en un objeto URL o no Si no se puede
- 00:44:56convertir es cuando lanzará la excepción
- 00:45:00que será eh recogida aquí Así que
- 00:45:03hacemos esto para cada uno de los
- 00:45:05elementos que vamos a crear que en este
- 00:45:07Vimos una ra que eran cinco Así que
- 00:45:09hacemos lo mismo
- 00:45:12eh para los otros
- 00:45:14cuatro aquí lo vemos y
- 00:45:18eh vemos como en el quinto el que parece
- 00:45:22aquí como catálogo cuatro eh pasamos
- 00:45:25solamente dos argumentos no pasamos
- 00:45:27categoría esto podíamos hacerlo con
- 00:45:28cualquier otro porque recuerda que no es
- 00:45:29obligatorio pero lo que ahora tenemos
- 00:45:32que fijarnos es que aquí ponemos eh Como
- 00:45:35Stream una URL que está mal formateada
- 00:45:38le falta el
- 00:45:40http por tanto esto cuando el
- 00:45:44constructor lo intente convertir en un
- 00:45:45objeto URL no va a poder y es cuando
- 00:45:48lanza la excepción pero excepción que en
- 00:45:50lugar de ser recogida en esta clase es
- 00:45:54recogida en esta con el que aquí
- 00:46:00ponemos Eh Pues ahora dentro del triler
- 00:46:03lo único que nos queda es utilizar un
- 00:46:06Loop para que muestre en pantalla la
- 00:46:10información de cada uno de los elementos
- 00:46:12que hemos creado de este modo Tan
- 00:46:17sencillo como
- 00:46:20siempre y ahora nos queda ya simplemente
- 00:46:23por poner alguna declaración sobre lo
- 00:46:25que queremos que haga si se lanza la
- 00:46:27excepción cuando la recoge vamos a poner
- 00:46:30simplemente error y utilizamos el método
- 00:46:32que decíamos antes get message para Que
- 00:46:35aparezca el mensaje de la excepción en
- 00:46:38concreto que se está
- 00:46:42produciendo el funcionamiento creo que
- 00:46:45tiene que estar más que claro de este
- 00:46:47modo lo que hacemos es estar llamando a
- 00:46:48los constructors y le pasamos tres
- 00:46:51argumentos los tres argumentos que
- 00:46:53tenemos aquí en página inicial de los
- 00:46:56Cuál es el segundo es un objeto URL
- 00:47:01cuando se le pase un String que no puede
- 00:47:04convertirse en un objeto URL no tiene un
- 00:47:06buen formato es cuando se lanza esta
- 00:47:09excepción marf URL excepción que es
- 00:47:13recogida por el Catch que hemos puesto
- 00:47:18aquí si ejecutamos tal como está ahora
- 00:47:22página
- 00:47:24catálogo vemos
- 00:47:27cómo
- 00:47:28aparece el mensaje y el get mensaje
- 00:47:32recupera no protocol y nos indica dónde
- 00:47:36no se cumple el protocolo que es aquí en
- 00:47:38W wt org si aquí simplemente añadimos
- 00:47:45http y lo
- 00:47:48ejecutamos ahora como vemos se ejecuta
- 00:47:51tal como queríamos que
- 00:47:54apareciera esta parte de el try recupera
- 00:47:59toda la
- 00:48:00información y si no aparece categoría lo
- 00:48:03que pasemos por defecto
- 00:48:07ninguna por tanto podemos resumir para
- 00:48:10finalizar que el manejo de las
- 00:48:11excepciones en Java se centra en el uso
- 00:48:15de block spr Catch y de throne y de
- 00:48:21thrones sistemas que pueden
- 00:48:24usarse separados pero pueden usarse
- 00:48:27también juntos incluso podemos usar los
- 00:48:31tres sistemas en una misma
- 00:48:34clase
- 00:48:36en una situación en la que queramos
- 00:48:39manejar las excepciones entrantes que
- 00:48:42sean eh lanzadas
- 00:48:45eh Y sean recogidas por nuestro método
- 00:48:49pero al mismo tiempo También queremos la
- 00:48:51opción de poder pasar esa excepción a
- 00:48:53cualquier otro método que llame al
- 00:48:56nuestro Así que usando trycatch
- 00:48:59eh podemos tratar con lación pero no
- 00:49:02podemos pasarla y añadiendo la cláusula
- 00:49:05throws eh podemos pasar la sección pero
- 00:49:10no podemos tratar con
- 00:49:12ella si queremos tanto manejar la
- 00:49:14excepción como pasarla al método que
- 00:49:17llame a nuestro método usamos estos tres
- 00:49:19mecanismos la cláusula throws la
- 00:49:22declaración try Catch y una declaración
- 00:49:25throw aquí en este ejemplo de código
- 00:49:27podemos verlo con esta declaración trout
- 00:49:31explícitamente relanzamos la excepción
- 00:49:33eh Aunque haya sido tratada en nuestro
- 00:49:36código eh mediante el uso de
- 00:49:41Catch y este código es totalmente válido
- 00:49:44y funcionará las excepciones pueden ser
- 00:49:47anidadas así que manejamos la excepción
- 00:49:50dentro de nuestra clase pero al mismo
- 00:49:51tiempo permitimos que el método que
- 00:49:54llame a nuestro método pueda manejar
- 00:49:56también esa excepción gracias a este
- 00:49:58sistema de anidamiento las excepciones
- 00:50:02por tanto pueden ir saltando de método a
- 00:50:04método sin que muchos de ellos tengan
- 00:50:07que tratar para nada con las excepciones
- 00:50:09Aunque sí que en alguno de los métodos
- 00:50:12hay que tratar con excepción si no se
- 00:50:14hace si se produce esa excepción nos
- 00:50:16dará un error nuestro programa como ya
- 00:50:19sabemos pues hasta aquí el tema
- 00:50:22relacionado con las excepciones que con
- 00:50:24esto tiene que quedar claro eh Para
- 00:50:27siempre que lo utilicemos a lo largo de
- 00:50:30el curso nos queda por ver el otro tema
- 00:50:33al que hacíamos referencia ya en otras
- 00:50:35ocasiones los threats la el sistema que
- 00:50:38Java utiliza para poder realizar
- 00:50:42multiples tareas
- 00:50:44y con eso terminamos este segundo bloque
- 00:50:48del curso y entraremos ya en el tercero
- 00:50:50en el que hoy hemos hablado de objetos
- 00:50:52como URL la web
- 00:50:55el bajo de Java en la web será la clave
- 00:50:59de ese tercer bloque Pero antes como
- 00:51:01digo en el próximo trataremos los thre
- 00:51:05por hoy nada más os hablo Jesús Conde
- 00:51:07nos vemos
- 00:51:08[Música]
- 00:51:16[Música]
- 00:51:27[Música]
- 00:51:42Oh
- 00:51:45[Música]
- Java
- excepciones
- errores
- manejo de errores
- programación
- try-catch
- throw
- throws
- bloque finally
- excepciones personalizadas