sexta-feira, 3 de fevereiro de 2012

O que é NullPointerException ?

"Quem nunca tomou um NullPointerException atire o primeiro mouse."

Quando uma pessoa começa a caminhar o longo caminho do mundo da programação um erro comum com qual se defronta é com o famoso e não querido NullPointerException, mas o que vem a ser esse obstaculo na vida de um programador e como resolvê-lo ? Para resolver tais estão publiquei essa essa dica que explica de forma bem simples o que é e como resolver um caso simples de NullPointerException.


Como ocorre ?

O NullPointerException ou NullPointer para os mais íntimos ocorre quando tenta-se utilizar um atributo ou método de um objeto que não fora inicializado. (Que esteja no estado null). Um exemplo pode ser visto no código abaixo:


package com.blogspot.maguscode;

public class TesteNullPointer {

   
    public static void main(String args[])
    {
        Carro carro = null;
        carro.setMarca("Gol");
        System.out.println("Marca do carro é:"+carro.getMarca());
    }
}


Quando esse código é executando o resultado é um NullPointerException como pode ser visto na figura abaixo:



 Neste caso o objeto Carro não foi instaciado e seu estado permaneceu nulo, quando foi tentado inserir um valor a seu atributo marca foi lançado um NullPointerException pois o objeto Carro em questão não existia em lugar algum. É como se tenta-se localizar uma casa com um determinado número em uma cidade que não existe.
De grosso modo o NullPointer acontece quando tentamos acessar um atributo em um objeto que não existe.


Como solucionar ?

Uma solução para matar o NullPointer seria verificar se o objeto está instancianciado caso não esteja instancia-lo ou simplismente instância-lo quando o mesmo for criado como no exemplo abaixo:



package com.blogspot.maguscode;

public class TesteNullPointer {

   
    public static void main(String args[])
    {
        Carro carro = new Carro();
        carro.setMarca("Gol");
        System.out.println("Marca do carro é:"+carro.getMarca());
    }


 




17 comentários:

  1. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  2. Muito bom seu artigo, tirou minha dúvida. Vlw

    ResponderExcluir
  3. estou tendo problemas no meu minecraft com esse erro a mensagem diz assim:


    --- BEGIN ERROR RELATÓRIO 7fe0271 --------
    Gerado 14/06/14 11:34

    - Detalhes do Sistema -
    Detalhes:
    Minecraft Versão: 1.5.2
    Sistema operacional: Windows 7 (x86) versão 6.1
    Java Version: 1.7.0_55, Oracle Corporation
    Java VM Versão: Java HotSpot (TM) Cliente VM (modo misto), Oracle Corporation
    Memória: 459066760 bytes (437 MB) / 518979584 bytes (494 MB) até 1037959168 bytes (989 MB)
    JVM Flags: total 2; -Xms512m-Xmx1024m
    AABB Pool Size: 0 (0 bytes; 0 MB) alocados, 0 (0 bytes; 0 MB) utilizado
    Aulas suspeitos: sem aulas suspeitos encontrados.
    IntCache: cache: 0, tcache: 0, alocado: 0, tallocated: 0
    LWJGL: 2.4.2
    OpenGL: ~ ~ ~ ~ ERRO NullPointerException: null
    É Modded: Provavelmente não. Assinatura Jar permanece e marca cliente é intocável.
    Tipo: Cliente (map_client.txt)
    Texture Pack: Default
    Profiler Posição: N / A (desativado)
    Vec3 Pool Size: ~ ~ ~ ~ ERRO NullPointerException: null [não conseguiu obter propriedades do sistema (java.lang.NullPointerException)]


    org.lwjgl.LWJGLException: formato de Pixel não acelerado
    em org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat (Método nativo)
    em org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat (WindowsPeerInfo.java: 52)
    em org.lwjgl.opengl.WindowsDisplay.createWindow (WindowsDisplay.java: 185)
    em org.lwjgl.opengl.Display.createWindow (Display.java: 311)
    em org.lwjgl.opengl.Display.create (Display.java: 856)
    em org.lwjgl.opengl.Display.create (Display.java: 784)
    em org.lwjgl.opengl.Display.create (Display.java: 765)
    em net.minecraft.client.Minecraft.a (SourceFile: 235)
    em avv.a (SourceFile: 56)
    em net.minecraft.client.Minecraft.run (SourceFile: 507)
    em java.lang.Thread.run (fonte desconhecida)
    --- RELATÓRIO 2ac8af92 END ERROR ----------

    ResponderExcluir
    Respostas
    1. A aplicação não está conseguindo acessar as propriedades do sistema, você sabe se ela utiliza algum arquivo em si para fazer a consulta dessas propriedades ?
      Caso sim pode ser que você não tenha acesso ao mesmo

      Excluir
  4. Hum... muito bom, bem simples e direto! valeu cara...

    ResponderExcluir
  5. Estou tendo Problema ao entrar no Facebook pelo meu celular, Estar dando o seguinte erro:

    Ocorreu um erro inesperado. Tente novamente mais tarde. (NullPointerException: null)

    ResponderExcluir
  6. Provavelmente alguma informação que deveria está valida está retornando nula.

    ResponderExcluir
  7. Estou com esse mesmo erro no meu face.... Como faço pra resolver??

    ResponderExcluir
  8. Estou com esse mesmo erro no meu face.... Como faço pra resolver??

    ResponderExcluir
  9. Alguém para responder esses comentários acima.porque o meu tbm ta assim.

    ResponderExcluir
  10. Alguém para responder esses comentários acima.porque o meu tbm ta assim.

    ResponderExcluir
    Respostas
    1. Ola eu fui no gerenciador de aplicaçoes depois no facebook fui em forçar parada e depois. Limpar dados ai pronto voltou normal

      Excluir
    2. Ola eu fui no gerenciador de aplicaçoes depois no facebook fui em forçar parada e depois. Limpar dados ai pronto voltou normal

      Excluir