Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que a RuntimeException é unchecked?

Posso ter deixado passar algo despercebido, mas se a Classe RuntimeException extende diretamente a Exception, como é possível dar um throw new RuntimeException sem que aja erro de compilação?

2 respostas
solução!

Oi Érick, tudo bem?

Embora a classe RuntimeException seja uma subclasse de Exception, ela é diferente das outras classes que herdam de Exception. Ela e todas as suas subclasses são unchecked, portanto o compilador não te obriga a declarar sua existência através do throws AlgumaCoisaException ou fazer uso do try-catch.

Se observarmos a documentação das classes Exception e RuntimeException, não conseguimos ver uma distinção clara entre elas já que todos os métodos são iguais. Isso se dá porque para a JVM, não existe diferença entre uma Exception e uma RuntimeException, mas para o compilador, existe. Ou seja, o compilador faz essa checagem apenas nas subclasses de Exception (checked), enquanto ignora as subclasses de RuntimeException (unchecked), por isso dizemos que o código unchecked não é verificado em tempo de compilação.

Espero ter ajudado, qualquer dúvida é só avisar!

Bons estudos!!

Olá Érick, tudo bem?

Apesar da RuntimeException extender a super classe Exception, ela não é do tipo checked pois é a partir dela que podemos definir as exeções do tipo unchecked, portanto ela em si também tem que ser desse tipo.

Se a RuntimeException fosse do tipo checked não seria possível para suas filhas serem do tipo unchecked, pois essa "caracterísca" é passada adiante pela herança.