Bienvenidos.
Continuamos con una nueva sección, con ejemplos de manejo, excepciones de errores.
Bueno, pero algo hemos visto, hemos trabajado con excepciones.
Por ahí hemos utilizado un trait catch, pero la idea es profundizar un poco más este tema, aterrizarlo
conceptos.
Así que bueno, vamos a cerrar todo, como siempre, se todo.
Cerramos también el proyecto.
Íbamos a crear uno nuevo.
Nuevo proyecto.
Siguiente siguiente el nombre, por ejemplo, o excepciones de excepciones.
Siguiente perfecto.
Acá lo tenemos.
Vamos a crear nuestro package.
En ese arrasé.
P o excepciones.
Punto.
Ejemplo Bien.
Una clase con el método Main.
Alguien crea una clase en vez de un pacato, pero incluyendo el РАМКАХ, pero la voy a renombrar.
También vamos a renombrar el pacato.
Por ejemplo, acá.
Refractor Rainey.
Acá.
Punto.
Ejemplo.
Qué era lo que quería o qué?
Y lo nombramos en la clase.
Entonces.
Refractor.
Ejemplo
excepciones refractor bien método main
y comenzamos había mencionado la clase anterior que hay dos tipos principales que son las chiquilladas
o checked y las han chequeado la sanches, que es cuando no nos obliga a manejar el error, ya sea con
un trait catch o bien declarar este lanzamiento escepción en el método con la sentencia con la cláusula
frus.
Un ejemplo típico si queremos ir por cero, entonces vamos a tener un entero, le vamos a llamar división
igual 10 dividido será para el ejemplo shout división.
Perfecto.
Si ejecutamos esto, se rompe la aplicación, se termina la ejecución.
Por lo tanto se interrumpe, se fijan.
Lanzo un error un aritméticos exception dividido por cero de forma automática y todo lo que siga en
nuestro código.
Por ejemplo, imprimir el resultado o qué cosa no sea ejecutar porque llega a tal error nomás después
no continúa.
Pero esto se puede cambiar, se puede manejar con un traje catch manejar este error de tal forma que
podemos continuar con la ejecución y realizar otras tareas, o bien solucionar este problema o notificar
al usuario con un mensaje de error.
En fin, para eso utilizamos en el código que podría lanzar la excepción.
Implementamos el try.
Entonces trae las llaves y estas llaves envuelven nuestro código.
Acá se fija, lo envuelven.
Acá es el ámbito donde ocurriría el error, donde se puede lanzar esta sección.
Luego un catch para manejar la excepción, para atrapar este error y hacer algo.
El tipo más genérico es excepto entonces.
Por ejemplo, podríamos colocar exception, aunque no es lo ideal, siempre recomendable manejar excepciones
por su tipo de forma más concreta.
Pero el tipo Exception es tan genérico.
Al final estamos capturando cualquier cosa y tampoco no le vamos a dar un tratamiento adecuado según
su tipo.
Entonces le vamos a llamar e íbamos a imprimir.
Entonces capturamos la acepción en tiempo ejecución.
2 Punto un espacio digo que tenemos con el mensaje e punto que message.
Este método, muy importante, porque contiene el resumen del error y también nos permite una vez que
manejamos el error con el catch.
Continuar con la ejecución.
Bien, veamos.
Entonces ahora ejecutamos.
Ocurren error.
Lo capturamos de forma genérica y capturamos la sesión en tiempo ejecución.
Dividido por cero, continuamos con el flujo de nuestra aplicación.
Por lo tanto, podemos continuar realizando otras tareas.
Es importante en lo posible.
Cuando manejamos error con el catch, cuando lo capturamos, indica.
Era el tipo.
Lo más concreto posible.
Específico para dar un tratamiento adecuado.
Y también, como explicaba, podríamos tener varios cazzo y cada catch captura una excepción distinta
según su tipo y le damos un tratamiento diferente.
Y también.
Básicamente polimorfismo.
También diferentes tratamientos según el tipo de error.
Entonces en vez de utilizar Exception podríamos utilizar aritméticos exception.
Entonces para acá tenemos aritmética y le cambiamos a E.
Aunque lo mismo, pero de aritmética Exception y acá a?
Entonces era mucho más concreto.
Vamos a ejecutar.
Aunque el resultado no cambia, pero sí cambia, el tipo que estaba manejando era más específico.
También tenemos el finali F y bueno, es opcional.
Como vimos, lo podemos implementar o no, pero acá podemos codificar alguna tarea que sea ejecutar
siempre independiente, si ocurre o no ocurre el error.
Para el ejemplo vamos a imprimir un mensaje, pero típicamente para cerrar recurso, por ejemplo, cerrar
la conexión a la seats o cerrar un archivo que estamos trabajando que posiblemente quedó abierto cuando
ocurre el error.
En fin, lo vimos hace rato, curré el error que ha abierto la conexión y con Finali no da la posibilidad
de finalizar la conexión.
Entonces se ejecuta siempre con o sin excepción.
Vamos a probar.
Levantamos.
Escenifican es opcional, pero se ejecuta siempre con o sin excepción.
Acá lanza la sesión, la manejamos y después ejecutas finalde y luego continuamos con el flujo en otra
aplicación.
Pero si cambiamos en vez de 0, por ejemplo a 5.
Se fijan, muestra el resultado.
División 2.
Igualmente imprime es opcional el finali por qué se ejecuta siempre?
Quitadme.
Continuamos con el flujo, obviamente porque no ocurre el error.
Entonces lo que se salta es el catch.
No atrapa error porque no ocurre la excepción, no se lanza.
Ahora veamos cómo podemos capturar o tener múltiples catch manejo de errores.
Supongamos que ahora el valor en vez de 5 o en vez de 0, por ejemplo, lo tenemos acá.
Entonces por acá vamos a definir este entero divisor.
Igual lo tenemos a través de un parámetro del usuario.
Entonces el tipo string porque vamos a definir otra variable string valor igual.
Bueno, puede ser con la clase Kanes o con el get out of pain.
Para variar, punto chew input dialog se ingrese
un entero y está entero, que en realidad no es un tipo entero, sino es un string que contiene un valor
numérico.
Lo vamos a convertir a un entero, a un intil.
Entonces integer punto parse int lo convertimos valor.
Perfecto, bien.
Qué pasa si ejecutamos?
Bueno, nos pide el valor.
Ven, colocamos 2.
Lanza el error porque acá tenemos que cambiar en vez de cero sería divisor.
Por qué lanzar acepcion video por cero entonces acá divisor.
Listo.
Ahora volvemos a levantar.
2.
Perfecto.
5 es opcional.
Bueno, y todo continúa perfecto.
No se lanza ningún error, pero si volvemos a ejecutar y colocamos R o qué cosa?
Algo que no sea numérico, ok.
Finaliza.
Se fijan con un código.
Uno lanza la presión en tiempo ejecución number format excepto.
Por lo tanto, acá estamos manejando dividido por cero.
Pero no estamos manejando la conversión de un string a un entero, porque podríamos colocar cualquier
cosa que no sea numérica y lanzaría un number.
Fórmate Septón.
Entonces también podríamos manejar otro catch con esta excepción y capturar dar un tratamiento especial.
Bueno, la idea que sea en orden, por ejemplo, primero convierte a un entero, así que podría lanzar
primero number fórmate exception ahora perfecto.
Si colocamos un cero, se convierte.
No hay ningún problema, ningún error.
Pero después dividimos por cero y podría lanzar el aritmético.
Es como otra segunda excepción.
Entonces acá tendríamos que primero manejar con un catch.
Voy a bajar catch number format excepto n f de number formas de ser chón.
Perfecto.
Entonces tenemos una y otra.
Entonces Shout
se torna excepción.
Se detiene escepción por favor ingrese un valor numérico y también podremos concatenar con el más con
el get Musset obtener message.
Esto es, lo vamos a quitar porque el que más corto bien el problema que si ejecutamos esto, obviamente
no va a pasar nada.
No lo estamos manejando.
Por qué?
Bueno, veamos, vamos a ejecutar Run.
Vamos a colocar.
Hola!
Se fijan, no se maneja.
Por qué tienes que estar dentro del traje?
Recuerden que en el TRIE es donde se trata de ejecutar este código que podría lanzar acepcion y el ÍNTE
y el parfait está afuera del Tri.
Por lo tanto, tendríamos que mover esto.
Esto es lo de copiar.
Lo dejamos acá.
Lo tenemos que mover acá dentro de este contexto.
Y esto lo quitamos.
Se fijan así?
Acá se define la variable fuera del try y acá la asignamos pero con el percent.
Entonces dentro del try intentamos ejecutar, convertir.
Si todo sale bien, perfecto.
Si no lanza el error y lo manejamos acá con el number format escepto lo vimos dividido por cero el divisor.
Ahora si levantamos.
Vamos a colocar cero para comenzar.
Perfecto.
Capturamos la acepción en tiempo ejecución dividido por cero.
Por lo tanto, cae acá en aritmética, excepto acá está o manejando.
Luego volvemos a levantar.
Vamos a colocar 5.
Bien 2 el Fanales ejecuta y continuamos.
Está perfecto.
Todo sale bien.
No se lanza ninguna excepción.
Ahora vamos a colocar.
Qué tal?
Trata de convertir quetal a un entero.
Lanza la excepción y lo manejamos, se detectó una acepción ingres un valor numérico para el campo string.
Qué tal?
Y lo mismo si no colocamos nada, por ejemplo, qué se fijan?
Es un string vacío.
Entonces tiene que ser numérico.
De esa forma lo estamos capturando incluso de forma opcional.
Podríamos volver a invocar el método Main.
Acá en el catch, por ejemplo.
Entonces acá damos el mensaje de error.
Mayne con los argumento args.
Y lo mismo acá.
Si lanza al error.
Hola, acá dice se detectó una sección, ingresa un valor numérico.
Colocamos 0 ok, capturamos escepcion en tiempo, ejecución Didio por cero y vuelve piré innumera hasta
que la ingresemos correctamente.
Por ejemplo.
2.
Perfecto, si continuamos con el flujo de nuestra aplicación y así podemos manejar el error, bien,
por ahora quedamos hasta acá y a partir de la siguiente clase continuamos con crear nuestros exepciones
de forma personalizadas con nuestra propia clase e implementación.
Nos vemos.