Olá desenvolvedores, hoje aprenderemos a interpretar uma exceção. No tutorial anterior ressaltamos a importância de se iterar também acerca dos possíveis erros que podem acontecer em desenvolvimento de sistemas. Visto que inevitavelmente erros irão ocorrer.
Assim sendo, o que faremos hoje é entender um pouco acerca da estrutura de uma exceção. Dessa forma, ao mesmo tempo em que nos familiarizamos com elas, aprenderemos como lê-las.
Já falamos que as exceções podem ser motivadas por fatores internos ou externos, sendo que est último normalmente foge ao controle da equipe de desenvolvimento. Ao passo que o primeiro, é passível de rápida solução pelo desenvolvedor. Mostramos também a arquitetura de uma exceção, onde evidenciou-se que as exceções em sua maioria são filhas da subclasse Exception. Esta, por sua vez pertence à classe Throwable.
Agora, uma importante informação para que você possa aproveitar bem este tutorial. A leitura e a interpretação de uma exceção sempre começam de baixo para cima, onde o ponto baixo refere-se ao nosso código e o final ao motivo do erro.
Para que possamos analisar juntos como uma exceção se apresenta, nada melhor do que o clássico NullPointerException. Este erro é um dos primeiros e mais comuns que você encontrará. E quem está iniciando, normalmente não sabe o que fazer quando se depara com um NPE.
Mas hoje você aprenderá como identificar onde e que tipo de erro ocorreu, nesta e em qualquer outra exceção.
O NullPointerException que normalmente é um erro de lógica de programação, ou seja, quando um programador esquece de verificar se o objeto está nulo ou não. Isto é, quando ele tenta acessar seja uma propriedade, métodos ou atributos de um objeto, mas sem tê-lo instanciado. Sem que ele tenha sido criado.
ANÁLISANDO UMA EXCEÇÃO
Simulei uma exceção, um NullPointerException e separei cinco pontos para analisarmos juntos. Siga estas “regras” e lembre-se de começar a analisar de baixo para cima, não importa qual seja a exceção.
O ponto inicial de qualquer erro é Classe do sistema, veja que ele aponta para PrimeiraClasseJava que está no package cursojava.executavel. No mesmo contexto será informado o método invocado, que se trata da entrada inicial do erro. E neste caso, é o main. Observe que até a linha onde o erro ocorreu é mostrado, Java:26.
Em suma temos que a Exceção ocorreu na PrimeiraClasseJava dentro do método main, na linha 26. Esta informação nos ajuda a localizar o erro, e por vezes até é o suficiente, mas não é tudo. Entretanto, ao clicar na parte destacada de azul, você será redirecionado para a linha do erro.
O terceiro dos cinco pontos fala sobre métodos e classes internas do nosso código. Aqui é preciso avaliar se não é um erro do próprio Java, por exemplo, algum erro relacionado a bibliotecas. Ou se trata de algum item externo, cujo controle foge ao domínio do desenvolvedor. Ou ainda, se diz respeito a algum erro de implementação por parte do programador.
Nesta linha você irá olhar para os pacotes e classes do projeto. Veja que o erro repercutiu em duas classes alocadas em pacotes distintos, desse modo a FuncaoAutenticacao e a Classe Diretor sofreram as consequências da exceção.
Mas ainda precisamos avaliar outros dois pontos para tomarmos alguma decisão, antes de sairmos mexendo no código de forma aleatória e totalmente no escuro. Porque agora procuramos pela identificação exata do erro. Veja onde na imagem acima apontamos para o NullPointerException.
E para finalizar, classes e linha exatas que mostram onde o erro ocorreu, um NullPointerException na FuncaoAutenticacao, linha 12.
EM POUCAS PALAVRAS
Então para lermos um erro começamos de baixo para cima e lendo a Classe e o método onde o erro ocorreu. Depois será a vez de verificarmos, onde estão os pacotes, e se estes fazem parte do nosso projeto ou do Java. Assim, na sequência o próximo passo é verificar qual foi a exceção e em qual linha ela ocorreu. Basta apenas clicar na linha destacada em azul.
Recapitulando, de baixo para cima, veja a classe, o método, procura por pacotes do projeto para que possa se localizar. Então procure pela exceção e descubra em qual linha ela ocorreu.
E uma última orientação, quando esta exceção faz parte do Java, via de regra ela foi gerada em função de uma pilha de problemas do nosso próprio código. Mas tudo isso você aprenderá com tempo e experiência adquiridos a partir de um sólido e consistente projeto de estudo. Estude e esteja presente.