Exceptions

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 ???

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

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

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. :wink: [/quote]

Blz… realmente lí como se fosse uma pergunta…

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

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.

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.

hehe niiiice :thumbup: