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
- Excepción: Un evento anormal que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones.
- Manejo de Excepciones: El proceso de responder a las excepciones y tomar medidas para resolverlas o mitigarlas.
- 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:
- Errores (
Error
): Indican problemas graves que una aplicación normalmente no debería intentar manejar. Ejemplos incluyenOutOfMemoryError
yStackOverflowError
. - 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áusulathrows
o capturadas en un bloquetry-catch
. Ejemplos incluyenIOException
ySQLException
. - Excepciones No Verificadas (
Unchecked Exceptions
): No requieren ser declaradas o capturadas. Son subclases deRuntimeException
. Ejemplos incluyenNullPointerException
yArrayIndexOutOfBoundsException
.
- Excepciones Verificadas (
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
- Bloque
try
: Contiene el código que puede lanzar una excepción. - Bloque
catch
: Captura y maneja la excepción lanzada en el bloquetry
. - 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
- Bloque
try
: Intenta convertir la entrada del usuario a un número entero. - Bloque
catch
: Captura y maneja la excepciónNumberFormatException
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
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection