En este tema, aprenderemos cómo crear nuestras propias excepciones personalizadas en Java. Las excepciones personalizadas son útiles cuando necesitamos manejar situaciones específicas de nuestra aplicación que no están cubiertas por las excepciones estándar de Java.

Conceptos Clave

  1. Excepciones en Java: Las excepciones son eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de las instrucciones.
  2. Jerarquía de Excepciones: Todas las excepciones en Java son subclases de Throwable. Las dos subclases principales son Exception y Error.
  3. Excepciones Personalizadas: Son subclases de Exception o RuntimeException que creamos para manejar situaciones específicas de nuestra aplicación.

Creación de Excepciones Personalizadas

Paso 1: Definir la Clase de Excepción

Para crear una excepción personalizada, necesitamos definir una clase que extienda Exception o RuntimeException.

public class MiExcepcionPersonalizada extends Exception {
    public MiExcepcionPersonalizada(String mensaje) {
        super(mensaje);
    }
}

Paso 2: Lanzar la Excepción

Podemos lanzar nuestra excepción personalizada usando la palabra clave throw.

public class EjemploExcepcionPersonalizada {
    public void metodoQueLanzaExcepcion() throws MiExcepcionPersonalizada {
        throw new MiExcepcionPersonalizada("Este es un mensaje de excepción personalizada");
    }
}

Paso 3: Capturar la Excepción

Para manejar la excepción, utilizamos un bloque try-catch.

public class ManejoExcepcionPersonalizada {
    public static void main(String[] args) {
        EjemploExcepcionPersonalizada ejemplo = new EjemploExcepcionPersonalizada();
        try {
            ejemplo.metodoQueLanzaExcepcion();
        } catch (MiExcepcionPersonalizada e) {
            System.out.println("Capturada: " + e.getMessage());
        }
    }
}

Ejemplo Completo

A continuación, se muestra un ejemplo completo que incluye la definición, lanzamiento y manejo de una excepción personalizada.

// Definición de la excepción personalizada
public class MiExcepcionPersonalizada extends Exception {
    public MiExcepcionPersonalizada(String mensaje) {
        super(mensaje);
    }
}

// Clase que lanza la excepción personalizada
public class EjemploExcepcionPersonalizada {
    public void metodoQueLanzaExcepcion() throws MiExcepcionPersonalizada {
        throw new MiExcepcionPersonalizada("Este es un mensaje de excepción personalizada");
    }
}

// Clase que maneja la excepción personalizada
public class ManejoExcepcionPersonalizada {
    public static void main(String[] args) {
        EjemploExcepcionPersonalizada ejemplo = new EjemploExcepcionPersonalizada();
        try {
            ejemplo.metodoQueLanzaExcepcion();
        } catch (MiExcepcionPersonalizada e) {
            System.out.println("Capturada: " + e.getMessage());
        }
    }
}

Ejercicio Práctico

Ejercicio 1: Crear y Manejar una Excepción Personalizada

  1. Definir una Excepción Personalizada: Crea una clase SaldoInsuficienteException que extienda Exception.
  2. Lanzar la Excepción: En una clase CuentaBancaria, crea un método retirar que lance SaldoInsuficienteException si el saldo es insuficiente.
  3. Manejar la Excepción: En una clase Banco, maneja la excepción usando un bloque try-catch.

Solución

// Definición de la excepción personalizada
public class SaldoInsuficienteException extends Exception {
    public SaldoInsuficienteException(String mensaje) {
        super(mensaje);
    }
}

// Clase que lanza la excepción personalizada
public class CuentaBancaria {
    private double saldo;

    public CuentaBancaria(double saldoInicial) {
        this.saldo = saldoInicial;
    }

    public void retirar(double cantidad) throws SaldoInsuficienteException {
        if (cantidad > saldo) {
            throw new SaldoInsuficienteException("Saldo insuficiente para retirar " + cantidad);
        }
        saldo -= cantidad;
    }

    public double getSaldo() {
        return saldo;
    }
}

// Clase que maneja la excepción personalizada
public class Banco {
    public static void main(String[] args) {
        CuentaBancaria cuenta = new CuentaBancaria(1000.0);
        try {
            cuenta.retirar(1500.0);
        } catch (SaldoInsuficienteException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Resumen

En esta sección, hemos aprendido cómo crear y manejar excepciones personalizadas en Java. Las excepciones personalizadas nos permiten manejar situaciones específicas de nuestra aplicación de manera más clara y estructurada. Hemos cubierto los pasos para definir, lanzar y capturar excepciones personalizadas, y hemos practicado con un ejercicio práctico.

En el siguiente tema, exploraremos el bloque finally y cómo se utiliza para ejecutar código que debe ejecutarse sin importar si se lanza una excepción o no.

Curso de Programación en Java

Módulo 1: Introducción a Java

Módulo 2: Flujo de Control

Módulo 3: Programación Orientada a Objetos

Módulo 4: Programación Orientada a Objetos Avanzada

Módulo 5: Estructuras de Datos y Colecciones

Módulo 6: Manejo de Excepciones

Módulo 7: Entrada/Salida de Archivos

Módulo 8: Multihilo y Concurrencia

Módulo 9: Redes

Módulo 10: Temas Avanzados

Módulo 11: Frameworks y Librerías de Java

Módulo 12: Construcción de Aplicaciones del Mundo Real

© Copyright 2024. Todos los derechos reservados