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

checked unchecked

Como assim a checked não passa por RuntimeException e a Unchecked passa por RuntimeException?

2 respostas

Boa tarde Gabriel!

A Classe Exception é checked, e a Classe RuntimeException é unchecked. Isso significa que, as Classe filhas de Exception são verificadas pelo compilador e as Classes filhas de RuntimeException não são verificadas pelo compilador.

Esse post pode ajudar:

https://pt.stackoverflow.com/questions/55624/exception-vs-runtimeexception-quando-utilizar-um-ou-outro

solução!

Um ponto importante é: Exceções de Runtime normalmente ocorrem por culpa sua (programador). Uma API não pode, dentro da razoabilidade, se preparar para erros de lógica que você insere na programação, como dividir por zero (ArithmeticException), ou acessar uma Array vazia (NullPointerException) ou um index inexistente de uma Array.

Se você como desenvolvedor permite que o usuário interaja e crie esses erros, você tem de declarar no método o tipo de exceção, mesmo que ela seja do tipo Runtime.

Imagina que você configura que um construtor da classe X pede uma String, mas o usuário devolve uma String null.

Se o null passar, ele tem potencial para gerar erros de NullPointer. Talvez você queira isso, mas vamos imaginar que você não queira criar um objeto com uma String vazia pq você não poderá manipular esse parâmetro. Então você vai e coloca no construtor:

public X(String nome) {
    if (nome.isEmpty()) {
        throw new NullPointerException("Preciso de um nome!");
     } else {
          this.nome = nome;
      }

Se eu receber uma string vazia, derruba a pilha e recomeça. Isso é o tipo Unchecked.

Mas eu também poderia "transformar" essa Exception do tipo unchecked para uma do tipo Checked, podendo se usar um bloco do tipo Try/Catch.

Direto da documentação do Java:

If a client can reasonably be expected to recover from an exception, make it a checked exception. 
If a client cannot do anything to recover from the exception, make it an unchecked exception

https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software