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

NullPointerException

Boa noite, gostaria de tentar entender melhor essa exceção, como funciona em baixo dos panos?

1 - Quem lança a exceção e como ela é detectada? O que eu acho: A JVM lança a exceção, como ela é detectada eu já não sei

2 - NullPointerException é um erro cuja culpa é do programador?

3-O que causa essa exceção?

4 - Qual melhor jeito de evitar essa exceção?

Muito obrigado pela atenção e desculpa pela quantidade de perguntas

2 respostas
solução!

Olá Mario.

  1. Sim, a JVM é quem mostra as Exceptions. As Exceptions podem ter duas origens: em tempo de compilação ou em tempo de execução. O erro no seu código pode ser detectado durante a compilação (em tempo de compilação), que é a verificação que a JVM faz no seu código para validar a sintaxe antes de compilar, se foi redigido conforme as regras vai para a fase de compilação. E o erro também pode ser detectado durante a execução (em tempo de execução), onde seu código compila, mas não executa, dado algum problema de lógica, por exemplo.

  2. Não se trata de culpa, mas de responsabilidade. As mudanças na regra de negócio potencializam as chances desses erros, portanto, faz parte do trabalho do programador lidar com esses problemas. Toda Exception deve ser tratada preventivamente pelo programador, mas nem todas são previsíveis.

  3. O que causa essa Exception é a tentativa de acesso à uma posição (índice) na Array que não existe. Por exemplo: se sua Array tem 3 posições (0, 1, 2) e de alguma forma você tenta acessar a posição 4... Pimba! Você ganha uma NullPointerException. DICA: na hora certa você irá entender melhor como funciona as Exceptions, é interessante que você percorra os três cursos de Java da Alura.

  4. Estudando, conhecendo a linguagem, praticando e recebendo muitas Exceptions na vida (rsrs), ou seja, experiência.

Mantenha-se firme nos estudos, não desista, se não entender agora vai acabar entendendo depois e não se prenda às dúvidas. Te vejo no topo!

Muito obrigado