Middle
Fale sobre o mecanismo de exceções em Java.
sobes.tech IA
Resposta da IA
No Java, o mecanismo de exceções é utilizado para tratar erros e outras situações excecionais que ocorrem durante a execução do programa.
Elementos principais do mecanismo de exceções:
- Exceção (Exception): Objeto que representa um evento que interrompe o fluxo normal de execução do programa.
- Blocos
try,catch,finally: São usados para tratar exceções.try: Bloco de código onde pode ocorrer uma exceção.catch: Bloco de código que é executado se uma exceção de um tipo específico ocorrer no blocotry.finally: Bloco de código que é sempre executado, independentemente de uma exceção ocorrer ou não. Usado para liberar recursos.
- Palavra-chave
throw: Usada para criar e lançar explicitamente uma exceção. - Palavra-chave
throws: Usada na assinatura do método para declarar os tipos de exceções que o método pode lançar.
Hierarquia de exceções em Java:
Throwable: Classe base para todas as exceções e erros.Error: Representa problemas graves dos quais o programa normalmente não consegue se recuperar (por exemplo,OutOfMemoryError).Exception: Representa exceções que o programa pode capturar e tratar.RuntimeException(Exceções não verificadas): Exceções que não requerem tratamento ou declaração explícita na assinatura do método (por exemplo,NullPointerException,ArrayIndexOutOfBoundsException).- Exceções verificadas (Checked Exceptions): Exceções que devem ser tratadas com um bloco
try-catchou declaradas comthrowsna assinatura do método (por exemplo,IOException,FileNotFoundException).
Exemplo de tratamento de exceção:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Resultado: " + result);
} catch (ArithmeticException e) {
// Tratamento da exceção ArithmeticException
System.err.println("Erro: Divisão por zero não permitida.");
System.err.println("Detalhes da exceção: " + e.getMessage());
e.printStackTrace(); // Exibe a pilha de chamadas
} finally {
// Este bloco sempre será executado
System.out.println("Bloco finally executado.");
}
}
public static int divide(int a, int b) {
// Pode lançar ArithmeticException se b = 0
return a / b;
}
}
Exemplo de uso de throws:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Pode lançar IOException
FileReader reader = new FileReader(filename);
// Trabalho adicional com o arquivo
}
public static void main(String[] args) {
try {
readFile("ficheiro_inexistente.txt");
} catch (IOException e) {
System.err.println("Erro ao ler o ficheiro: " + e.getMessage());
}
}
}