Exceptions

9 respostas
C

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?

9 Respostas

adriano_si

Onde leste que Runtime estende IO ???

C

Favor ler a frase novamente, amigo.
“essa RuntimeException não estende IOException…”

Vou mudar a pontuação pra tentar ser mais claro. :wink:

neno

Eita, hehe pergunta intrigante, também quero saber, porque não deu erro

adriano_si

cake:
Favor ler a frase novamente, amigo.
“essa RuntimeException não estende IOException…”

Vou mudar a pontuação pra tentar ser mais claro. :wink:

Blz… realmente lí como se fosse uma pergunta…

Mas ainda não entendi porque deveria dar erro… Qual está sendo a dúvida ???

C

Como o método declara uma IOException, ele só deveria lançar uma IOException ou um subtipo de IOException.

E

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.

C

Mas e a IOException declarada? Nunca será lançada?

E

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.

C

hehe niiiice :thumbup:

Criado 19 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 9
Participantes 4