Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Uso do throws na assinatura do método

Escrevi esse código e não coloquei explicitamente a exceção na assinatura do método:

public class Fluxo {

    public static void main(String[] args) {
        System.out.println("Início do main");
        try {
            metodo1();
        } catch(ArithmeticException | NullPointerException | MinhaExcecao ex) {
            String msg = ex.getMessage();
            System.out.println("Exception message: " + msg);
           //ex.printStackTrace();
        }
        System.out.println("Fim do main");
    }

    private static void metodo1() {
        System.out.println("Início do metodo1");
        metodo2();
        System.out.println("Fim do metodo1");
    }

    private static void metodo2() {
        System.out.println("Início do metodo2");

        throw new MinhaExcecao("deu muito errado");

        //System.out.println("Fim do metodo2");
    }

}

E meu código compila normalmente e não mostra o erro do compilador. Saída:

Início do main
Início do metodo1
Início do metodo2
Exception message: deu muito errado
Fim do main

O que estou fazendo de errado? Já que pela aula o código só deveria funcionar com o "throws MinhaExcecao"

2 respostas
solução!

Oii Thiane, tudo bem?

Verifica se sua classe está estendendo diretamente de Exception, por favor. O erro no compilador ocorre somente com isso, que quer dizer que a exceção é do tipo checked e precisa de tratamento. Se ela ainda estiver estendendo de RuntimeException, ela é unchecked e não precisa de tratamento. Provavelmente vem daí a diferença com o do professor.

Espero ter ajudado! :)

Abraços,

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Iasmin! Tudo bem e contigo? Era isso mesmo, esqueci de mudar para Exception. Muito obrigada

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software