Bloque Finally
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 41 de 59.
El bloque finally contiene código que se ejecutará después de los bloques try-catch, ocurra o no una excepción. Se usa comúnmente para operaciones de limpieza como cerrar archivos o conexiones de base de datos.
Aquí está la estructura básica de un bloque try-catch-finally:
try {
// Code that might throw an exception
} catch (ExceptionType e) {
// Code to handle the exception
} finally {
// Code that always executes
}Veamos un ejemplo con un contador:
int counter = 0;
try {
int result = 10 / 0;
// Esto lanzará una excepción
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3;
// Esto siempre se ejecutará
}Después de ejecutar el código anterior, counter contiene:
3
Desafío
FácilCrea un método llamado processNumber que toma dos argumentos:
- Un String (
number) para convertir a entero - Un boolean (
shouldThrow) que determina si debe lanzarse una excepción
El método debe:
- Inicializar una variable result en 0
- En el bloque try:
- Si shouldThrow es true, divide 10 por 0
- De lo contrario, convierte la cadena number a entero y almacénala en result
- En el bloque catch: establece result en -1
- En el bloque finally: suma 100 a result
- Devuelve result como cadena
Hoja de referencia
El bloque finally se ejecuta después de los bloques try-catch, independientemente de si ocurre una excepción. Se utiliza para operaciones de limpieza.
Estructura básica:
try {
// Code that might throw an exception
} catch (ExceptionType e) {
// Code to handle the exception
} finally {
// Code that always executes
}Ejemplo con contador:
int counter = 0;
try {
int result = 10 / 0; // throws exception
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3; // always executes
}
// counter = 3Pruébalo tú mismo
import java.util.Scanner;
public class Main {
public static String processNumber(String number, boolean shouldThrow) {
// Escribe tu código aquí
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String number = scanner.nextLine();
boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
System.out.println(processNumber(number, shouldThrow));
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras