🧩 Ejemplo POO + throw, throws y try-catch

Ejemplo practico de Manejo Estructurado de Excepciones en Java POO



Ver base teórica previa🚀

🎯 Escenario:

Sistema simple de registro de usuarios, donde:

  • Se valida la edad (con throw)

  • Se simula lectura de datos (con throws)

  • Se manejan errores en main (con try-catch)


🏗️ 1. Clase Usuario (Entidad)

public class Usuario {
    private String nombre;
    private int edad;

    public Usuario(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }
}

⚠️ 2. Excepción personalizada

public class EdadInvalidaException extends Exception {

    public EdadInvalidaException(String mensaje) {
        super(mensaje);
    }
}

🔎 Esto es clave en POO: crear tus propias reglas de error.


🧠 3. Clase ServicioUsuario (Lógica de negocio)

import java.io.*;

public class ServicioUsuario {

    // Uso de throw
    public void validarEdad(Usuario usuario) throws EdadInvalidaException {
        if (usuario.getEdad() < 18) {
            throw new EdadInvalidaException("El usuario " + usuario.getNombre() + " es menor de edad");
        }
    }

    // Uso de throws
    public void cargarDatos() throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("datos.txt"));
        System.out.println("Leyendo datos: " + br.readLine());
        br.close();
    }
}

🚀 4. Clase principal Main (Ejecución)

import java.io.IOException;

public class Main {

    public static void main(String[] args) {

        Usuario usuario = new Usuario("Edvin", 16);
        ServicioUsuario servicio = new ServicioUsuario();

        try {
            servicio.validarEdad(usuario);   // puede lanzar excepción personalizada
            servicio.cargarDatos();          // puede lanzar IOException

            System.out.println("Usuario registrado correctamente");

        } catch (EdadInvalidaException e) {
            System.out.println("Error de negocio: " + e.getMessage());

        } catch (IOException e) {
            System.out.println("Error de archivo: " + e.getMessage());

        } finally {
            System.out.println("Proceso finalizado (finally)");
        }
    }
}

🧠 Lógica clave

Puedes dividirlo así:

🔹 Nivel 1: POO

  • Usuario → datos

  • ServicioUsuario → lógica

  • Main → ejecución

🔹 Nivel 2: Excepciones

  • throw → lanzo error manual

  • throws → aviso que el método puede fallar

  • try-catch → controlo errores


🔥 Resultado esperado al ejecutar

Si edad = 16:

Error de negocio: El usuario Edvin es menor de edad
Proceso finalizado (finally)

Si cambias edad a 20 pero no existe el archivo:

Error de archivo: datos.txt (No such file or directory)
Proceso finalizado (finally)


Comentarios

Entradas populares de este blog

Aprende a Armar tu PC con el Simulador de Cisco 🖥️ Guía Paso a Paso

¿Qué es XAMPP y cómo descargarlo e instalarlo en Windows?

🗄️ Cómo Instalar y usar SQLite en Windows [Guía Paso a Paso]