Na hierarquia de exceções em Java, é correto afirmar que
- A)a classe RuntimeException é uma subclasse da classe Exception.
Certa, porque RuntimeException é subclasse de Exception na hierarquia de exceções de Java.
- B)a classe Error herda da classe Exception.
Errada, porque Error herda diretamente de Throwable, e não de Exception.
- C)as classes NullPointerException e IndexOutOfBoundsException não são válidas no tratamento de exceção em Java.
Errada, porque NullPointerException e IndexOutOfBoundsException são exceções válidas e pertencem ao grupo das RuntimeException.
- D)a classe Exception é uma subclasse da classe IOException.
Errada, porque IOException é que herda de Exception, e não o contrário.
Gabarito: A
Em Java, a hierarquia de exceções começa na classe Throwable, que se divide em dois ramos principais: Exception e Error. Dentro de Exception, existe um grupo muito importante chamado RuntimeException, que representa as chamadas exceções não verificadas (unchecked), aquelas que o compilador não obriga voce a tratar com try-catch ou a declarar em throws. É por isso que a alternativa A está correta: RuntimeException realmente é subclasse de Exception. Já os Errors representam problemas mais graves da máquina virtual, como falhas internas, e não herdam de Exception. Em geral, eles não são tratados como exceções comuns no código de aplicação. Então, se voce imaginar a árvore, Exception e Error são “irmãs” na base de Throwable, e não uma dentro da outra. Outro ponto clássico de prova: NullPointerException e IndexOutOfBoundsException são sim válidas na hierarquia de exceções Java, só que também são unchecked, pois derivam de RuntimeException. Elas podem aparecer em tempo de execução e normalmente não precisam de declaração obrigatória. A banca gosta de confundir isso com “não valem para tratamento”, mas valem, sim. Por fim, Exception não é subclasse de IOException. É o contrário: IOException é subclasse de Exception. Em resumo, a questão testa a árvore de herança e a diferença entre checked e unchecked, um detalhe básico de Java que costuma cair bastante.