Capítulo 12. Try & catch
Bud ha conseguido las claves que necesitaba del despacho de Vicente. Van a resultar esenciales para ejecutar el plan. Salir de la prisión no va a ser sencillo, pero regresar a ella sin que nadie se dé cuenta va a ser aún más complicado.
Parece ser que uno de los funcionarios que trabaja en el hospital de la cárcel ha estado robando algunos medicamentos para venderlos entre los presos. La idea es extorsionarlo para que nos ayude a introducirme de nuevo. No debería ser muy difícil; seguro que coopera sin problemas.
Una vez fuera, cuando llegue el momento de regresar, me esconderé en el maletero de su coche y simplemente entraremos hasta el aparcamiento de empleados. Desde allí, acceder a la biblioteca sin ser visto es muy sencillo. Deberé esconderme hasta que llegue la hora diaria de visita a la biblioteca y luego mezclarme con el grupo.

El guardia en cuestión se llama Phil y no nos ayudará sin motivo. De hecho, si se entera de nuestros planes de fuga, nos delataría inmediatamente.
Necesitamos pruebas de su fechoría; una vez que las tengamos, no tendrá más remedio que colaborar. Bud se encargará de ello. Tiene muchos recursos y parece que ha estado siguiendo de cerca las actividades de Phil. Por el momento, yo no tengo que hacer nada, aunque ya me han avisado que mi aportación será crucial al final de la huida
Ya tenemos una fecha aproximada para la fase final de nuestro plan. En dos semanas habrá unos días festivos, y las medidas de seguridad suelen reducirse. No mucho, pero al menos eso nos da algo de ventaja. Con esta información, ahora puedo coordinarme con el primo de Chani y decirle más o menos qué día voy a salir.
Una vez especificado este rango de días, espero que Chani se encargue de contactar con Rich y organizar un encuentro. No sé cómo vamos a conseguir la confesión; supongo que la idea es grabar un audio con el móvil, pero como estoy prácticamente incomunicado, aún no tengo más detalles.
Ayer tuve una larga conversación con Bud, y me comentó lo que piensa hacer cuando nuestros caminos se separen. Pedro y él llevan mucho tiempo planeando la fuga. Es una oportunidad que no pueden dejar escapar. No sé cuántos años tienen exactamente, pero calculo que rondan los 50. Aún les queda una cantidad considerable de condena y no quieren pasar lo que les queda de vida encerrados.
Tienen contactos fuera y van a abandonar el país el mismo día en que salgan. El plan es estar muy lejos una vez que los guardias se den cuenta de que han escapado. Espero que todo salga bien.

Introducción e importancia de los bloques try y catch en Java
En Java, se utilizan bloques de código try y catch para manejar excepciones. Las excepciones son situaciones que pueden ocurrir mientras se ejecuta un programa y que podrían interrumpir el flujo normal de ejecución del programa. Por lo tanto, para evitar esto, debemos tener en cuenta esos posibles eventos y controlarlos de antemano.
Estos bloques son totalmente necesarios ya que son una forma organizada y controlada de tratar errores y excepciones durante la ejecución del programa. Gracias a try y catch vamos a evitar posibles errores en nuestro programa con los que ni siquiera contamos.
Las excepciones más típicas
División por Cero: Envolviendo la división dentro de un bloque try, puedes capturar la ArithmeticException y mostrar un mensaje de error adecuado.
Conversión de Cadenas a Números: Utiliza try-catch para capturar NumberFormatException y manejar entradas no válidas.
Acceso a Índices de Arrays: Protege el acceso a los elementos del array con try-catch para capturar ArrayIndexOutOfBoundsException.
Operaciones Aritméticas Seguras: Usa Math.subtractExact dentro de un bloque try para capturar ArithmeticException en caso de desbordamiento.
Concatenación de Cadenas: Envuelve el bucle de concatenación en un bloque try para capturar OutOfMemoryError y manejar el error.
Estructura de los bloques try-catch
– Bloque try
try {
// Código que puede generar una excepción
}
– Bloque catch
Se coloca directamente después del bloque try y tiene esta estructura:
catch (TipoDeExcepcion e) {
// Código para manejar la excepción
}
– Ejemplo básico
public class Main {
public static void main(String[] args) {
try {
int resultado = 10 / 0; // Esto lanza ArithmeticException
System.out.println("El resultado es: " + resultado);
} catch (ArithmeticException e) {
System.out.println("Error: No se puede dividir por cero.");
}
}
}
Múltiples Bloques catch
Puedes tener múltiples bloques catch para manejar diferentes tipos de excepciones. Cada catch maneja una excepción específica.
public class Main {
public static void main(String[] args) {
try {
// Código que puede lanzar diferentes excepciones
int resultado = 10 / 2;
String texto = null;
System.out.println(texto.length()); // Esto lanza NullPointerException
} catch (ArithmeticException e) {
// Maneja ArithmeticException
System.out.println("Error aritmético: " + e.getMessage());
} catch (NullPointerException e) {
// Maneja NullPointerException
System.out.println("Error: Se intentó usar una referencia nula.");
}
}
}
El Bloque finally (Opcional): Puedes añadir un bloque finally después de los bloques catch. El bloque finally se ejecuta siempre, independientemente de si se lanzó o no una excepción, y es útil para liberar recursos como cerrar archivos o conexiones de base de datos.
public class Main {
public static void main(String[] args) {
try {
// Código que puede lanzar excepciones
int resultado = 10 / 0; // Esto lanzará ArithmeticException
System.out.println("Resultado: " + resultado);
} catch (Exception e) {
// Maneja cualquier excepción
System.out.println("Se ha producido una excepción: " + e.getMessage());
} finally {
// Código que siempre se ejecuta, con o sin excepción
System.out.println("Bloque finally ejecutado.");
}
}
}
Resumen de lo aprendido
Como te comentaba al principio del tema, en Java, los bloques try y catch son fundamentales para gestionar situaciones imprevistas durante la ejecución de un programa, evitando interrupciones en su desarrollo normal.
Puede que en ejercicios sencillos no sea necesario utilizar esta estructura, pero cuando los programas se hacen más complejos es necesario tener en cuenta todos los posibles sucesos que pueden acontecer durante la ejecución de nuestro código. Estos bloques permiten manejar, entre otras cosas, errores como división por cero, conversiones de cadenas incorrectas, accesos fuera de rango en arrays y operaciones aritméticas que podrían exceder límites.
Llegados a este punto, la estructura try-catch no debe resultarte muy complicada. Dentro del bloque try encontramos el código que podría generar una excepción. Si esta se produce, es cuando el bloque catch entra en acción y se encarga de manejar el error. Puedes tener varios bloques catch para diferentes tipos de excepciones y opcionalmente usar el bloque finally para ejecutar código que siempre debe ejecutarse, como la liberación de recursos.