El manejo de excepciones es una parte crucial de la programación en Java, ya que permite a los desarrolladores gestionar errores de manera controlada y evitar que las aplicaciones se bloqueen inesperadamente. En esta sección, aprenderemos sobre el bloque try-catch, que es la estructura básica para manejar excepciones en Java.
Conceptos Clave
- Excepción: Un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones.
 - Bloque 
try: Contiene el código que puede generar una excepción. - Bloque 
catch: Contiene el código que maneja la excepción si ocurre. - Bloque 
finally: (Opcional) Contiene el código que se ejecuta siempre, independientemente de si se lanzó una excepción o no. 
Sintaxis Básica
La estructura básica de un bloque try-catch es la siguiente:
try {
    // Código que puede lanzar una excepción
} catch (TipoDeExcepcion e) {
    // Código para manejar la excepción
}Ejemplo Práctico
Vamos a ver un ejemplo simple donde intentamos dividir un número por cero, lo cual genera una excepción ArithmeticException.
public class TryCatchExample {
    public static void main(String[] args) {
        try {
            int result = 10 / 0; // Esto lanzará ArithmeticException
            System.out.println("El resultado es: " + result);
        } catch (ArithmeticException e) {
            System.out.println("Error: No se puede dividir por cero.");
        }
    }
}Explicación del Código
- Bloque 
try: Contiene el código que intenta dividir 10 por 0. - Bloque 
catch: Captura la excepciónArithmeticExceptiony ejecuta el código dentro del bloquecatch, imprimiendo un mensaje de error. 
Múltiples Bloques catch
Puedes tener múltiples bloques catch para manejar diferentes tipos de excepciones.
public class MultipleCatchExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // Esto lanzará ArrayIndexOutOfBoundsException
        } catch (ArithmeticException e) {
            System.out.println("Error: Operación aritmética inválida.");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Error: Índice de arreglo fuera de rango.");
        } catch (Exception e) {
            System.out.println("Error: Ocurrió una excepción.");
        }
    }
}Ejercicio Práctico
Ejercicio 1: Manejo de Excepciones
Escribe un programa que lea dos números enteros del usuario y los divida. Maneja las posibles excepciones que puedan ocurrir, como ArithmeticException y InputMismatchException.
import java.util.Scanner;
import java.util.InputMismatchException;
public class DivisionWithExceptionHandling {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("Ingrese el primer número: ");
            int num1 = scanner.nextInt();
            System.out.print("Ingrese el segundo número: ");
            int num2 = scanner.nextInt();
            int result = num1 / num2;
            System.out.println("El resultado es: " + result);
        } catch (ArithmeticException e) {
            System.out.println("Error: No se puede dividir por cero.");
        } catch (InputMismatchException e) {
            System.out.println("Error: Entrada inválida. Por favor, ingrese números enteros.");
        } finally {
            scanner.close();
            System.out.println("El bloque finally se ha ejecutado.");
        }
    }
}Solución del Ejercicio
- Bloque 
try: Lee dos números del usuario y los divide. - Bloque 
catch: CapturaArithmeticExceptionsi el segundo número es cero yInputMismatchExceptionsi la entrada no es un número entero. - Bloque 
finally: Cierra elScannery ejecuta un mensaje final. 
Retroalimentación sobre Errores Comunes
- Olvidar cerrar recursos: Siempre cierra recursos como 
Scanneren un bloquefinallypara evitar fugas de recursos. - Capturar excepciones genéricas: Capturar 
Exceptionen lugar de excepciones específicas puede ocultar errores y hacer que el código sea más difícil de depurar. 
Conclusión
El bloque try-catch es una herramienta esencial para manejar excepciones en Java. Permite a los desarrolladores escribir código más robusto y resistente a errores. En la próxima sección, exploraremos el uso de throw y throws para lanzar y declarar 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
 
