DEV Community

Lançando uma exceção com throw

Lançamento manual de exceções:

Em Java, além de capturar exceções geradas automaticamente pela JVM, é possível lançar exceções manualmente utilizando a instrução throw.

Sintaxe do throw:
A forma geral para lançar uma exceção é:

throw obExceç;

Enter fullscreen mode Exit fullscreen mode

Onde obExceç é um objeto de uma classe de exceção que herda de Throwable.

Exemplo de código lançando uma exceção manualmente:

  • No exemplo a seguir, uma exceção do tipo ArithmeticException é lançada manualmente dentro de um bloco try.

Exemplo de código:

// Lança manualmente uma exceção.
class ThrowDemo {
    public static void main(String args[]) {
        try {
            System.out.println("Before throw.");
            // Lança manualmente uma exceção
            throw new ArithmeticException();
        }
        catch (ArithmeticException exc) {
            // Captura a exceção lançada manualmente
            System.out.println("Exception caught.");
        }
        System.out.println("After try/catch block.");
    }
}

Enter fullscreen mode Exit fullscreen mode

Saída do programa:
O programa imprime uma mensagem antes de lançar a exceção, captura a exceção e, em seguida, continua a execução após o bloco try/catch.

Exemplo de saída:

Before throw.
Exception caught.
After try/catch block.

Enter fullscreen mode Exit fullscreen mode

Criando e lançando um objeto de exceção:
A exceção é criada com a instrução new seguida pela classe da exceção, como new ArithmeticException(). Isso é necessário porque o throw exige um objeto de exceção, e não um tipo.
O objeto da exceção pode ser personalizado, fornecendo uma mensagem ou outros detalhes relevantes ao criar o objeto.

Conclusão:
Usar o throw permite que exceções sejam lançadas de maneira controlada, dando flexibilidade para gerar erros em condições específicas.
Este mecanismo é útil em cenários em que você deseja interromper o fluxo de execução devido a uma condição excepcional e garantir que ela seja tratada adequadamente por um bloco catch.

Top comments (0)