quarta-feira, 27 de junho de 2007

NullPointerException não devia se chamar ErrorOfProgrammerException?


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.

Um comentário:

CMilfont disse...

eu tenho uma estratégia para lançar os erros sempre para as camadas superiores, afinal é sobretudo elas que tem o interesse de saberem se a coisa funfou ou não.
Crio uma estratégia tentando simular o conceito de Design by contract que é a base desse artigo do Shoes, onde o metodo testa o perímetro dos valores aceitáveis e lança uma exceção que é capturada por quem faz a chamada e então decide que estratégia lançar como uma mensagem a um usuário ou a chamada a um esquema de contenção (como o caso de perder a conexão ao banco por exmeplo e ficar offline)