Buscar en moleculax

Este blog es un ensayo digital donde el pensamiento estructurado se encuentra con la introspección profunda. Explora la arquitectura del conocimiento: desde lo técnico hasta los fundamentos éticos. Aquí, cada algoritmo tiene propósito, cada línea de código refleja intención, y cada reflexión filosófica busca optimizar no solo sistemas, sino también decisiones humanas. Este blog no solo enseña a pensar, enseña a discernir, a construir con sentido. Porque el verdadero desarrollo nace de la conciencia, y eso exige precisión, virtud y coraje.

Tenemos que aprender a contemplar las potenciales consecuencias de nuestros planes, para impedir que nos sorprendan. De esta manera, tendremos más control sobre las situaciones difíciles ya que el verdadero progreso no se mide por la velocidad con la que avanzamos, sino por la dirección que elegimos. En un mundo cada vez más interconectado, el desarrollo de la humanidad exige más que tecnología y conocimiento: requiere conciencia, empatía y propósito.

Debemos cultivar una inteligencia que no solo resuelva problemas, sino que los prevenga con sabiduría. Una ciencia que no solo descubra, sino que se pregunte por qué y para quién. Una economía que no solo crezca, sino que reparta con justicia. Y una cultura que no solo celebre lo diverso, sino que lo abrace como fuerza vital.

Cada decisión que tomamos, cada palabra que decimos, cada idea que compartimos, puede ser una semilla de transformación. El futuro no está escrito: lo estamos escribiendo juntos, ahora mismo.

Que el desarrollo humano sea integral, sostenible y profundamente humano. Porque solo cuando elevamos a todos, nos elevamos como especie.

Sabiduría Justicia Templanza Coraje
Curso: Excepciones en Java

Curso: Excepciones en Java — Moleculax

Curso: Excepciones en Java

Guía práctica — teoría, ejemplos y ejercicios.

🔹 Módulo 1 — Introducción a las excepciones

Una excepción es un evento que interrumpe el flujo normal de ejecución de un programa cuando ocurre una condición anómala (por ejemplo: división por cero, error de E/S, índice fuera de rango).

Throwable
 ├── Error
 └── Exception
      ├── Checked
      └── Unchecked (RuntimeException)

🔹 Módulo 2 — Manejo básico: try, catch, finally

Ejemplo simple de try-catch que captura una ArithmeticException:

public class Division {
    public static void main(String[] args) {
        try {
            int resultado = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("Error: división entre cero.");
        }
    }
}

Uso de finally — siempre se ejecuta incluso si ocurre una excepción:

try {
    int[] numeros = {1, 2, 3};
    System.out.println(numeros[5]);
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Índice fuera de rango.");
} finally {
    System.out.println("Bloque finally: siempre se ejecuta.");
}

🔹 Módulo 3 — Checked vs Unchecked

Checked Exceptions deben ser manejadas o declaradas con throws (ej.: IOException).

import java.io.FileReader;
import java.io.IOException;

public class Archivo {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("archivo.txt");
        } catch (IOException e) {
            System.out.println("No se pudo abrir el archivo.");
        }
    }
}

Unchecked Exceptions heredan de RuntimeException y no es obligatorio capturarlas.

public class Ejemplo {
    public static void main(String[] args) {
        String texto = null;
        System.out.println(texto.length()); // NullPointerException
    }
}

🔹 Módulo 4 — throw y throws

throw lanza una excepción explícitamente. throws declara que el método puede lanzar ciertas excepciones.

public class Validacion {
    public static void validarEdad(int edad) {
        if (edad < 18) {
            throw new IllegalArgumentException("Debes ser mayor de edad.");
        }
    }

    public static void main(String[] args) {
        validarEdad(15);
    }
}
import java.io.*;

public class Lector {
    public static void leerArchivo(String ruta) throws IOException {
        FileReader fr = new FileReader(ruta);
        fr.close();
    }

    public static void main(String[] args) {
        try {
            leerArchivo("noexiste.txt");
        } catch (IOException e) {
            System.out.println("Error de lectura: " + e.getMessage());
        }
    }
}

🔹 Módulo 5 — Excepciones personalizadas

Crear excepciones específicas para reglas de negocio ayuda a que el código sea más claro y fácil de mantener.

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

public class Registro {
    public static void registrarEdad(int edad) throws EdadInvalidaException {
        if (edad < 0 || edad > 120) {
            throw new EdadInvalidaException("Edad inválida: " + edad);
        }
        System.out.println("Edad registrada: " + edad);
    }

    public static void main(String[] args) {
        try {
            registrarEdad(-5);
        } catch (EdadInvalidaException e) {
            System.out.println(e.getMessage());
        }
    }
}

🔹 Módulo 6 — Buenas prácticas

  • Capturar excepciones específicas en lugar de catch (Exception e) cuando sea posible.
  • Usar mensajes claros y localizables en las excepciones.
  • No ocultar errores silenciosamente; al menos loguea o re-lanza.
  • Usar excepciones personalizadas para casos de negocio.
  • Evitar lógica compleja dentro de catch; delega al manejador o registra el error.

🔹 Módulo 7 — Ejercicios prácticos

Ejercicio 1 — Cajero automático

Crear clase Cuenta con saldo y método retirar(amount). Lanzar una excepción personalizada SaldoInsuficienteException si el saldo es insuficiente.

Ejercicio 2 — Validador de contraseñas

Implementar un validador que lance WeakPasswordException cuando la contraseña no cumpla condiciones (longitud mínima, mayúscula, número, símbolo).

Ejercicio 3 — Lector de archivos

Leer un archivo línea a línea. Manejar FileNotFoundException y mostrar un mensaje amigable con el nombre del archivo.

Ejercicio 4 — Banco

Clase Banco que permita transferencias entre cuentas; lanzar TransferenciaInvalidaException en transferencias no permitidas (monto negativo, cuentas iguales, etc.).

@moleculax

.

agenda 2023 (1) Algo que leer (262) Android (2) Angular (2) Apache (4) API (1) Arte y Cultura (11) Artes Marciales (10) Banner (1) Base de datos (29) Batalla Cultural (4) Big Data (11) Budismo (4) cabala judia (2) Calculo Asistido por computadoras (2) Canaima (6) Caos (1) Ceo (1) ciencias (1) Cine (1) Cobol (12) Cobra Kai (1) Codigo Linux Documental (2) Computación (3) Computación forense (14) Configurando Samba (1) Consola (8) Criptomonedas (3) Cursos (15) Darkweeb (3) Data Mining (1) Debian (2) DeepWeb (7) demografia (6) Deporte y Recreación (9) Deportes (10) Desktop (1) developers (1) Document (1) Ecología (6) Editor (2) Educacion y TIC (29) Electronica (2) Emprendimiento (7) Espiritualidad (2) estoicismo (4) Eventos (2) Excel (1) Express (1) Filosofía (23) Flisol 2008 (3) Flisol 2010 (1) Flisol 2015 (1) framework (1) Funny (1) Geografía (1) Gerencia y Liderazgo (72) Gestor de Volúmenes Lógicos (1) Git (5) GitHub (6) gnu (26) Go (1) gobiernos (2) golang (2) Google por dentro (1) GraphQL (1) gRPC (1) Hackers - Documental (8) Hacking (30) Historia (3) howto (188) html (1) IA (17) IntelliJIDEA (1) Internet (6) Introducción a los patrones (2) J SON (1) java (48) java eclipse (2) javaScript (8) JDK (1) jiujitsu (4) Json (1) kali (37) kernel (2) Kotlin (1) Laravel (2) Latin (1) LIbreOffice (1) Libros (4) Linux (37) Linux VirtualBox (1) Literatura (1) Manuales (42) Markdown (3) Marketing (1) Matando ladilla (9) Matematricas (1) Math (1) maven (1) metodos https (1) Modelos (1) MongoDB (17) Multimedia (1) mvc (2) Mysql (19) MySQL Workbench (1) Nagios (2) Naturismo (1) node (2) Node.js (4) NodeJS (6) NoSQL (1) Oracle (3) Oracle sql (3) Php (1) PL/SQL (1) Plsql (1) PNL (1) Poblacion (2) Poesia (1) Politica (3) Política (1) Postgresql (1) PowerShell (1) programacion (72) Psicologia (9) Python (4) Redes (31) Religion (2) REST (2) Rock/Metal Mp3 (1) RUP (1) Salud (5) sc:snap:android-studio (1) sc:snap:datagrip (1) sc:snap:gitkraken linux (1) Seguridad (17) Seguridad con Gnu Privacy (2) Seo (1) simulaEntrevistas (10) simularExamen (10) Sistemas Operativos (69) SOAP (1) Sociedad (3) Software Libre (169) Soporte Tecnico (12) Sphinx (1) spring (1) spring boot (10) SQL (3) SQL en postgreSQL (38) Taekwondo (11) Tecnologia (4) Tecnología (27) Templarios (5) Thymeleaf (1) Tor (9) Trialectica (3) TYPEACRIPT (1) Ubuntu (5) Vida activa (1) Videos (11) Videos Educativos (10) Vim (1) Viral (3) Visual Studio (1) wallpaper (2) Wifi (2) Windows (3) WWW (2) Xrandr (1) Zero Trust (2)

Sabiduria Justicia Templanza Coraje.

Hay que contemplar las potenciales consecuencias de nuestros planes, para impedir que nos sorprendan. De esta manera, tendremos más control sobre las situaciones difíciles.


Powered by