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 incluyenOutOfMemoryErroryStackOverflowError. - 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áusulathrowso capturadas en un bloquetry-catch. Ejemplos incluyenIOExceptionySQLException. - Excepciones No Verificadas (
Unchecked Exceptions): No requieren ser declaradas o capturadas. Son subclases deRuntimeException. Ejemplos incluyenNullPointerExceptionyArrayIndexOutOfBoundsException.
- Excepciones Verificadas (
Diagrama de Jerarquía de Excepciones
Throwable
├── Error
│ ├── OutOfMemoryError
│ └── StackOverflowError
└── Exception
├── IOException (Checked)
├── SQLException (Checked)
└── RuntimeException (Unchecked)
├── NullPointerException
└── ArrayIndexOutOfBoundsExceptionEjemplo 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ónNumberFormatExceptionsi 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
