Sobes.tech
Middle

Quais são as formas de tratar exceções verificadas?

sobes.tech IA

Resposta da IA

  • Usar o bloco try-catch: permite capturar exceções e tratá-las, evitando a terminação inesperada do programa.
  • Declarar que um método lança uma exceção, usando a palavra-chave throws na assinatura do método: isso transfere a responsabilidade do tratamento para o código que o chama.
  • Envolver uma exceção verificável numa não verificável: permite lançar a exceção sem tratamento explícito, mas pode esconder um problema real.

Exemplo de uso de try-catch:

// Exemplo de uso de try-catch para tratar uma exceção verificável
try {
    // Código que pode lançar uma exceção verificável (por exemplo, IOException)
    FileReader file = new FileReader("my_file.txt");
    // Trabalhar com o arquivo...
} catch (IOException e) {
    // Tratamento de IOException
    e.printStackTrace(); // Mostrar a pilha de chamadas para depuração
    System.err.println("Erro ao trabalhar com o arquivo: " + e.getMessage());
}

Exemplo de uso de throws:

// Exemplo de uso de throws na assinatura do método
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Trabalhar com o arquivo...
}

// O código que chama deve tratar IOException ou declará-la na sua própria assinatura
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Erro ao ler o arquivo: " + e.getMessage());
    }
}

Exemplo de envolver numa exceção não verificável:

// Exemplo de envolver uma exceção verificável numa não verificável
public void unsafeOperation() {
    try {
        // Código que pode lançar uma exceção verificável
        throw new IOException("Exemplo de IOException");
    } catch (IOException e) {
        // Transformar a exceção verificável numa não verificável
        throw new RuntimeException("Erro detectado na operação", e);
    }
}