Las excepciones son eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de las instrucciones. En Java, las excepciones son objetos que representan condiciones de error o situaciones excepcionales que pueden ocurrir durante la ejecución de un programa.

Conceptos Clave

  1. Excepción: Un evento anormal que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones.
  2. Manejo de Excepciones: El proceso de responder a las excepciones y tomar medidas para resolverlas o mitigarlas.
  3. Jerarquía de Excepciones: En Java, todas las excepciones son subclases de la clase Throwable.

Jerarquía de Excepciones en Java

La jerarquía de excepciones en Java se puede dividir en dos grandes categorías:

  1. Errores (Error): Indican problemas graves que una aplicación normalmente no debería intentar manejar. Ejemplos incluyen OutOfMemoryError y StackOverflowError.
  2. Excepciones (Exception): Indican condiciones que una aplicación podría querer manejar. Se dividen en:
    • Excepciones Verificadas (Checked Exceptions): Deben ser declaradas en una cláusula throws o capturadas en un bloque try-catch. Ejemplos incluyen IOException y SQLException.
    • Excepciones No Verificadas (Unchecked Exceptions): No requieren ser declaradas o capturadas. Son subclases de RuntimeException. Ejemplos incluyen NullPointerException y ArrayIndexOutOfBoundsException.

Diagrama de Jerarquía de Excepciones

Throwable
├── Error
│   ├── OutOfMemoryError
│   └── StackOverflowError
└── Exception
    ├── IOException (Checked)
    ├── SQLException (Checked)
    └── RuntimeException (Unchecked)
        ├── NullPointerException
        └── ArrayIndexOutOfBoundsException

Ejemplo Práctico

Veamos un ejemplo básico de cómo manejar una excepción en Java:

Código de Ejemplo

public class ExceptionExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // Esto lanzará ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Error: Intentaste acceder a un índice fuera del rango del arreglo.");
        }
    }
}

Explicación del Código

  1. Bloque try: Contiene el código que puede lanzar una excepción.
  2. Bloque catch: Captura y maneja la excepción lanzada en el bloque try.
  3. ArrayIndexOutOfBoundsException: Es una excepción no verificada que se lanza cuando se intenta acceder a un índice fuera del rango de un arreglo.

Ejercicio Práctico

Ejercicio 1

Escribe un programa que lea un número entero desde la entrada estándar y maneje la posible excepción NumberFormatException si el usuario ingresa un valor no numérico.

Código de Ejemplo

import java.util.Scanner;

public class NumberFormatExceptionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Ingresa un número entero: ");
        
        try {
            String input = scanner.nextLine();
            int number = Integer.parseInt(input);
            System.out.println("El número ingresado es: " + number);
        } catch (NumberFormatException e) {
            System.out.println("Error: El valor ingresado no es un número entero válido.");
        }
    }
}

Solución

  1. Bloque try: Intenta convertir la entrada del usuario a un número entero.
  2. Bloque catch: Captura y maneja la excepción NumberFormatException si la entrada no es un número entero válido.

Resumen

En esta lección, hemos aprendido sobre las excepciones en Java, su jerarquía y cómo manejarlas utilizando bloques try-catch. Las excepciones son una parte crucial de la programación en Java, ya que permiten manejar errores de manera controlada y mejorar la robustez de nuestras aplicaciones.

En la próxima lección, profundizaremos en el uso del bloque try-catch y exploraremos otras técnicas avanzadas de manejo de excepciones.

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