Já que IOException é uma checked exception, o compilador não deveria reclamar que o método abaixo nunca lança a IOException e por isso não poderia ser declarada na cláusula throws?
class NovaException extends Exception {}
class Base {
/*
* Não deveria dar o erro:
* IOException é um checked exception
* e nunca é lançada no corpo deste método?
*/
public void amethod() throws NovaException, java.io.IOException {}
public static void main(String args[]) {
Base b = new Base();
try {
b.amethod();
} catch (NovaException e) {
System.out.println(e);
} finally {
System.out.println("finally executado");
}
}
}
Checked Exceptions
5 Respostas
Neste caso nao, pois voce sequer esta usando o pacote java.io!
Nao entendi muito bem, mas se nao for isso que eu presumi, eslcareca mais…
Não existe problema nenhum em colocar exceptions "a mais". O que não poderia acontecer é o contrário, você estar fazendo alguma operação de IO e não tratar uma possível Exception.
Colocar uma exception a mais em um método é até um recurso que você pode utilizar para garantir que outras classes que utilizem esse método estejam preparadas para receber a exception caso algum dia você mude de idéia e resolva colocar neste método algum IO.
O erro que eu "esperava provocar" era este:
TExcep4.java:19: exception java.io.IOException is never thrown in body of
corresponding try statement
} catch (IOException e) {
^
1 error
Eu me lembrava dele quando estudei exceções e falhei ao tentar reproduzir o erro no exemplo acima, para isso bastou tirar a IOException da cláusula throws do método e tentar pegá-la no bloco try.
Obrigado!
So uma dica, voce jah experimentou usar o Eclipse? Na versao M4, ele jah vem com a implementacao de exibir codigos desnescessarios, tais como exceptions que nao serao nescessarias, imports que nao estao sendo utilizados pela classe etc…
Vale a pena! 
Obrigado pela dica, eu uso o Forte 3 (que já está "defasado"), mas vou fazer um esforço pra começar a usar o Eclipse.