cake
Novembro 19, 2010, 3:25pm
#1
void metodo(int j) throws IOException
{
if(j == 10)
{
throw new RuntimeException();
}
}
Eu sei que o código não faz muito sentido.
Mas é só pra aprendizado.
A pergunta é: como isso compila?
Digo, essa RuntimeException não estende IOException .
Não deveria dar pau?
Onde leste que Runtime estende IO ???
cake
Novembro 19, 2010, 3:44pm
#3
Favor ler a frase novamente, amigo.
“essa RuntimeException não estende IOException…”
Vou mudar a pontuação pra tentar ser mais claro.
neno
Novembro 19, 2010, 3:45pm
#4
Eita, hehe pergunta intrigante, também quero saber, porque não deu erro
[quote=cake]Favor ler a frase novamente, amigo.
“essa RuntimeException não estende IOException…”
Vou mudar a pontuação pra tentar ser mais claro. [/quote]
Blz… realmente lí como se fosse uma pergunta…
Mas ainda não entendi porque deveria dar erro… Qual está sendo a dúvida ???
cake
Novembro 19, 2010, 4:09pm
#6
Como o método declara uma IOException, ele só deveria lançar uma IOException ou um subtipo de IOException.
Ah, mas tem algumas letrinhas miúdas no contrato. No contrato (ou melhor, na especificação do Java), diz explicitamente que exceções que herdam de RuntimeException não precisam ser declaradas no throws.
cake
Novembro 19, 2010, 4:15pm
#8
Mas e a IOException declarada? Nunca será lançada?
O fato de você declarar que um método pode lançar uma exceção não quer dizer que, obrigatoriamente, ele deva lançá-la. Outra coisa nas letrinhas miúdas.