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

Unchecked Exceptions

Qual parte do código contido em RuntimeExceptions faz com que as exceções que são estendidas dessa classe não precisem ser "conferidas"?

3 respostas

Marcelo, não entendi sua pergunta

O que diferencia uma exceção "checked" de uma "unchecked" é se ela deriva ou não de uma RuntimeException, certo? Nesse caso, pelo que eu entendi, deve ter algo dentro da classe RuntimeException fazendo com que uma exceção derivada dela não precise ser "checkada". Eu queria entender o que é esse algo, que parte do código contido em RuntimeException faz isso.

Não sei se agora faz sentido a pergunta.

solução!

Oi Marcelo! Tudo bem?

Gostaria de responder sua pergunta com uma imagem. Segue o link:

https://www.google.com/search?biw=1444&bih=860&tbm=isch&sa=1&ei=C9OjXNfHIKqj5OUPmYmRiAI&q=java+exception+tree&oq=java+exception+tree&gs_l=img.3..0i19j0i8i30i19.11331.11679..11876...0.0..0.99.365.4......1....1..gws-wiz-img.5h96WAIxEEE#imgrc=xKHeKLzlmBs_dM:

Basicamente a linguagem java tem alguns conceitos inerentes, como dogmas que são conceitos que não podemos discutir, apenas acatá-los.

Muitos conceitos são utilizados na construção das fundações do Java e logo, para se programar para uma linguagem, você deve seguí-los.

Agora, voltando ao caso das RuntimeExceptions, o que faz com que elas se comportem diferentes de Exceptions, sendo que Exceptions é uma classe pai de RuntimeExceptions?

Essa diferença é bem simples.

Checked Exceptions (extends Exception): Se um método pode arremessar uma exception, como no caso do acesso a arquivos que pode arremessar IOException, uma vez que o método tenta escrever o arquivo, ele obriga que a classe capturar a exception, ou então arremesse usando o throws no próprio método.

De uma forma mais leiga, pode se dizer que checked exception é um erro previsto.

Unchecked Exceptions (extends RuntimeException): Se durante a execução de um método, uma Unchecked Exception pode ser arremessada, você não precisa nem colocar o try e nem o throws no método. Isso, apesar de facilitar muito o desenvolvimento, ele oculta possíveis erros naturais que podem ocorrer no método.

Do mesmo modo, de uma maneira bem leiga, uma divisão por zero é uma Runtime Exception, porque não é possível prever o divisor de uma operação matemática, logo ArithmeticException estende RuntimeException.

Por favor, me avise caso permaneça com dúvidas.

Abraço e sucesso,

Rodrigo