Bloco Finally
Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 41 de 59.
O bloco finally contém código que será executado após os blocos try-catch, independentemente de uma exceção ocorrer ou não. Ele é comumente usado para operações de limpeza, como fechar arquivos ou conexões de banco de dados.
Aqui está a estrutura básica de um bloco try-catch-finally:
try {
// Code that might throw an exception
} catch (ExceptionType e) {
// Code to handle the exception
} finally {
// Code that always executes
}Vamos ver um exemplo com um contador:
int counter = 0;
try {
int result = 10 / 0;
// Isso lançará uma exceção
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3;
// Isso sempre será executado
}Após executar o código acima, counter contém:
3
Desafio
FácilCrie um método chamado processNumber que recebe dois argumentos:
- Uma String (
number) para converter em inteiro - Um boolean (
shouldThrow) que determina se uma exceção deve ser lançada
O método deve:
- Inicializar uma variável result com 0
- No bloco try:
- Se shouldThrow for true, divida 10 por 0
- Caso contrário, converta a string number em inteiro e armazene em result
- No bloco catch: defina result como -1
- No bloco finally: adicione 100 ao result
- Retorne result como uma string
Folha de consulta
O bloco finally é executado após os blocos try-catch, independentemente de uma exceção ocorrer. É usado para operações de limpeza.
Estrutura básica:
try {
// Code that might throw an exception
} catch (ExceptionType e) {
// Code to handle the exception
} finally {
// Code that always executes
}Exemplo com contador:
int counter = 0;
try {
int result = 10 / 0; // throws exception
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3; // always executes
}
// counter = 3Experimente você mesmo
import java.util.Scanner;
public class Main {
public static String processNumber(String number, boolean shouldThrow) {
// Escreva seu código aqui
}
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de Palavras