¿Cómo generar excepciones en Java?

Icono play
Java
Generar excepciones

Escribir código, no solo en Java, sino en cualquier lenguaje de programación, no está exento de que se produzcan errores que impliquen que posiblemente la aplicación no se ejecute de manera correcta.

Java tiene toda una clase que sirve para manejar este tipo de situaciones, se trata Throwable, que a su vez tiene las subclases exceptionerror.

Las excepciones, en particular, se producen cuando el código que se está ejecutando viola de alguna manera las restricciones que tiene Java como lenguaje de programación. 

Es vital aprender el manejo de las excepciones en Java para crear aplicaciones que funcionen y resuelvan las necesidades para las que fueron diseñadas.

¿Cómo generar excepciones en Java?

Java cuenta con excepciones predefinidas (IOException) que muestran a quien está programando que hay operaciones que no se están llevando a cabo de una manera correcta. 

Por otro lado, también se pueden crear excepciones para que el código se ejecute aún en caso de presentarse ciertos fallos 

Una excepción no verificada es una incidencia que se produce durante la ejecución del programa (runtime) que interrumpe el flujo de las instrucciones. Este tipo de excepciones pueden ser capturadas y manejadas para que el código se ejecute hasta el final. 

En el siguiente código hay un típico ejemplo de una excepción no verificada o generada durante la ejecución:

public class Main {
    public static void main(String[] args) {
        dividir(4, 0);
    }
    public static int dividir(int A, int B) {
        return A / B;
    }

}

Al ejecutar este código, Java detendrá la ejecución del programa y arrojará un mensaje informando que se ha producido una ArithmeticException al intentar dividir un número entre cero. Esto puede ser manejado así:

Capturando una excepción

Una de las maneras de gestionar una excepción no verificada o runtime de Java es usando la construcción  try … catch que permite evaluar un bloque de código y arroja un mensaje si hay algún problema que impida entregar el resultado esperado.

Siguiendo con el ejemplo anterior:

public class Main {

    public static void main(String[] args) {
        dividir(4, 0);

    }
    public static int dividir(int A, int B) {
        int resultado = 0;
        try { // bloque de instrucciones a evaluar
            resultado = A / B;
            System.out.println("El resultado es: " + resultado);
        } catch (ArithmeticException e) { //se crea un objeto de la clase mencionada
            System.out.println("No se puede dividir entre 0");
        }
        return resultado;

    }

}

Generando una excepción con throws y throw en Java

Otra forma de resolver esto es usando para ello la sentencia throws que señala la posibilidad de que se presenten una o varias excepciones y gestiona su manejo.

En el uso de esta sentencia se debe indicar el tipo de las excepciones que posiblemente se presenten:

Mostrando esto con el ejemplo que se ha usado hasta ahora:

public class Main {

    public static void main(String[] args) {
        try {
            dividir(4, 0);

        } catch (ArithmeticException e) {
            System.out.println("No es posible hacer esta operación");
        }
    }

    public static int dividir(int A, int B) throws ArithmeticException {
        int resultado = 0;
        try { // bloque de instrucciones a evaluar
            resultado = A / B;
            System.out.println("El resultado es: " + resultado);
        } catch (ArithmeticException e) {
            throw new ArithmeticException(); //se crea un objeto de esa excepción
        }
        return resultado;

    }

}

Resumiendo

En Java el manejo de excepciones se gestiona utilizando las palabras: try, catch, throw y throws.  

La manera correcta de hacerlo es: 

  1. El código que puede generar una excepción se encierra en una sentencia try.
  2. Si efectivamente se produce la excepción, esta será detectada por el bloque catch y ahí estarán las indicaciones para manejarla.
  3. Si se quiere generar una excepción, es necesario emplear throw para indicarla y se debe especificar con la sentencia throws dónde y cómo será gestionada.
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: