NullPointerException – um mal necessario

Quem programa em Java e nunca escreveu código que lançou uma NullPointerException, que atire a primeira pedra. A NPE talvez seja a exceção mais comum em Java e causa ódio em algumas pessoas, que acham que a linguagem podia “engoli-la” de algum jeito. Posso dizer pra vocês que isso, definitivamente, é uma péssima idéia.

No meu projeto atual tivemos, por várias razões, que escrever um pedaço do código em PL/SQL. Num é que a tal da linguagem “engole” os erros de operações com null? Funciona mais ou menos assim: qualquer coisa que você faz com null, dá null! Parece bom? Que nada! Imagina que isso:

IF X > 0 THEN
   ...
ELSE
   ...
END IF;

pode cair no else se x for null! Quem conhece PL, pode dizer: mas existe o NVL pra isso! Usar NVL(var, valor) retorna valor se var for null. Agora, imagina usar NVL pra quase todo uso de variável numérica no seu código. Pois é, nojento mesmo! O bonito é quando você não faz isso. O resultado pode acabar sendo um null como retorno da function ou em um campo da tabela. Aí, vai achar por que deu null… :-(

Por isso eu digo: benditas NPEs!!! Pelo menos, tem um stack trace onde eu sei exatamente em que linha os problemas ocorrem e limito meu escopo de “caça” ao null. BTW, um dia eu pego o cara que decidiu que as coisas fossem assim em PL… :-P

Comments are closed.