3
respostas

Se eu já sinalizei na assinatura do método que ele pode lançar uma exceção, a linha "throw new MinhaExcecao("deu muito errado");" é necessária?

private static void metodo2() throws MinhaExcecao {
    System.out.println("Ini do metodo2");
    throw new MinhaExcecao("deu muito errado");

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

Não é obrigado. Mas porque seu método avisaria que lança uma excepcion sem lançar ?

Bom dia, Douglas!

Olhe só, quando você criou o objeto MinhaExcecao(msg), no metodo2(), na verdade, você neste momento, estar lançando uma "bomba" no mesmo, fazendo com que o fluxo de execução do código mude. Por isso que a assinatura do método tem que ser sinalizado, informando que ali possui um código perigoso.

Caso contrário, se no método não possuir algum código que comprometa o seu fluxo de execução ou que cause algum erro de compilação, então a assinatura do método não precisa ser sinalizada.

Não é. Não haverá erro de compilação. É importante entender também, que o fato de haver "throws" na assinatura significa que o método tem potencial de lançar a exceção, ele pode ou não lançá-la.