July 10, 2007

(1) Comentário

Tratamento de NullPointer no Eclipse Europa

Rafael Carneiro

,

Continuando a série de posts sobre NullPointerException e as primeiras impressões do eclipse europa, hoje estava vendo as novas funcionalidades e um amigo do trabalho me alertou sobre uma nova configuração de Errors/Warnings nas preferências do eclipse.

No eclipse europa, foi adicionado um novo item nas configurações do compilador e agora você pode verificar possíveis erros em tempo de compilação. No menu, vá em Window – Preferences e marque a opção Potential null pointer access como Error.

Veja na imagem abaixo:

Crie uma classe de teste e adicione o método abaixo ou crie um se preferir.

Código:

Com essa opção marcada como Error, o compilador irá gerar um erro informando que a variável situacao poderá lançar um erro de NullPointerException. O compilador entende que esse if pode retornar false e a referência situacao não será instanciada e poderá ocorrer um erro de NullPointerException na chamada do método add da interface List.

Você também pode marcar essa funcionalidade como Warning, para não gerar erros em todos os seus projetos e ainda ficar informado de possíveis erros.

Tem mais funcionalidades interessantes, como: classes serializaveis sem o serialVersionUID, atribuições sem efeitos, blocos catch sem conteúdo e vários outros.

June 27, 2007

(1) Comentário

NullPointerException não devia se chamar ErrorOfProgrammerException?

Rafael Carneiro

Recentemente no trabalho fui chamado por um Analista para tirar uma dúvida no seu código. Adivinha qual era o erro? Claro que o erro era de NullPointerException, mais conhecido como “erro do programador”. O Phillip Calçado escreveu um excelente artigo, chamado Contratos Nulos, onde ele explica claramente e absurdamente bem como evitar esse erro, utilizando boas práticas de programação.

Mas a questão é, por que os programadores não evitam esse tipo de erro?

Um exemplo bem comum desse erro:

Método algumaCoisa

Método main

Se por algum motivo o método algumaCoisa receber por parâmetro um objeto String que aponta para null, esse método irá lançar uma NullPointerException. O erro se dá por conta do objeto param chamar o método equals sem ter uma referência.

Então, para evitar esse erro faça:

Método algumaCoisa




Com certeza deve existir outras formas de evitar vários erros de NullPointerException, mas a principal falha é dos programadores, por não “visualizarem” esses erros nos seus códigos.