Para estos casos tenemos las excepciones, estos son objetos que se construyen y se levantan cuando ocurre algún error que impide el funcionamiento normal de la aplicación, esto nos da la oportunidad de manejar el mismo y evitar que el programa finalice de manera inesperada, pudiendo así dar un mensaje más elegante al usuario.
Manejo de excepciones
Como indicamos las excepciones son objetos que se levantan cuando ocurre un error en la ejecución de nuestro programa, si no las manejamos adecuadamente el mismo finalizará de forma inesperada mostrando el error por el cual falló.
Hay ocasiones también en las que somos nosotros voluntariamente quienes debemos levantar la excepción, ya sea como parte de una depuración del programa o porque dentro de nuestra lógica de desarrollo queremos arrojar una excepción si ocurre alguna combinación de condiciones, para ello tenemos el método throw() que viene del inglés arrojar.
Veamos a continuación la estructura completa que podemos utilizar para poner en práctica lo mencionado:
try { //aquí va el código a intentar ejecutar //aquí podemos lanzar una excepción con el método throw de querer } catch (tipoExcepción ex) { //una vez capturada la excepción aquí va el código que seguirá ejecutándose }
Como vemos la estructura no implica nada que no podamos entender, veamos un ejemplo más a profundidad.
Ejemplo práctico
Vamos ahora a realizar un programa que haga la división de dos números enteros, como debemos saber, si hacemos una división de un número entero entre cero 0 va a ocurrir un error, en este caso una excepción del tipo aritmética, la cual vamos a atrapar y evitar que nuestro programa falle terriblemente. Veamos el código a utilizar:
import java.util.Scanner; public class DivisionExcepcion { public static int quotient(int numero1, int numero2) { if (numero2 == 0) throw new ArithmeticException("El divisor no puede ser 0"); return numero1 / numero2; } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Ingrese dos numeros enteros: "); int numero1 = input.nextInt(); int numero2 = input.nextInt(); try { int result = quotient(numero1, numero2); System.out.println(numero1 + " / " + numero2 + " es "+ result); } catch (ArithmeticException ex) { System.out.println("Excepcion:un entero " + " no puede ser divido entre 0"); } System.out.println("Aqui sigue nuestro programa"); } }
Notamos que la excepción la arrojamos con el método throw dentro de un método personalizado que hace la división de los números enteros, luego este método lo llamamos dentro de nuestro bloque try y finalmente si la excepción ocurre la capturamos y mostramos el error necesario y luego podemos continuar con nuestro programa. Veamos como luce en nuestra consola:
Con esto finalizamos nuestro tutorial habiendo demostrado efectivamente como podemos manejar de forma básica las excepciones evitando así que un error fatal destruya el flujo de nuestro programa.