DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 70: Utilize exceções verificadas para condições recuperáveis e exceções de runtime para erros de programação

Tipos de exceções em Java:

Exceções Verificadas: para condições recuperáveis das quais o chamador pode se recuperar.
Exceções de Runtime: para erros de programação, como violação de pré-condições (por exemplo, acessar um índice inválido de um array).
Erros: geralmente reservados para a JVM e não devem ser usados por desenvolvedores.

Exceções Verificadas vs. Exceções de Runtime:

Use exceções verificadas se o código chamador puder tomar uma ação para resolver a situação.

Use exceções de runtime para indicar falhas no contrato da API, que devem ser corrigidas pelo programador.

// Exemplo de exceção verificada (condição recuperável)
public void readFile(String filePath) throws IOException {
    // código para leitura do arquivo
}

// Exemplo de exceção de runtime (erro de programação)
public int getElement(int[] array, int index) {
    if (index < 0 || index >= array.length) {
        throw new ArrayIndexOutOfBoundsException("Index out of bounds");
    }
    return array[index];
}

Enter fullscreen mode Exit fullscreen mode

Forneça métodos auxiliares em exceções verificadas:

Exceções verificadas devem incluir métodos para ajudar o chamador a lidar com a condição excepcional.

Exemplo: se uma compra falhar por saldo insuficiente, forneça o valor do déficit para que o chamador possa exibir essa informação.

public class InsufficientFundsException extends Exception {
    private final double deficit;

    public InsufficientFundsException(double deficit) {
        super("Saldo insuficiente: falta " + deficit);
        this.deficit = deficit;
    }

    public double getDeficit() {
        return deficit;
    }
}

Enter fullscreen mode Exit fullscreen mode

Resumo
Use exceções para situações excepcionais e não como um fluxo de controle alternativo.
Diferencie entre exceções verificadas e de runtime para indicar ao chamador o tipo de tratamento necessário.
Inclua métodos auxiliares nas exceções verificadas para fornecer informações úteis ao chamador, facilitando a recuperação.
Esses princípios ajudam a manter o código mais claro, eficiente e fácil de depurar.

Top comments (0)