Sim Peter, mas como eu posso corrigir? já estou um tempinho nisso

obrigado.

Em 5 de julho de 2010 19:27, Peter P. Lupo <[email protected]> escreveu:

> Vamos analisar com calma este staktrace:
>
> A main é executada e na linha 21 ela vai para a pilha pois chamou outro
> método, o criaAluno, que vai ser executado.
>
> Na linha 23 ele lançou uma NPE.
>
> Uma NPE só pode acontecer por dois motivos.
>
> 1. foi lançada com throws, como qualquer exceção (nunca vi isso com uma
> NPE).
> 2. foi lançada pq foi acessada uma referência que não apontava para nenhum
> objeto (é pra isso que a NPE serve, é isto que ela significa).
>
> Então, na linha 23, vc acessa alguma referência (chamando um método ou
> acessando um atributo) que não foi inicializada, não referencia ninguém,
> APONTA para NULL (NULL POINTER exception).
>
> Sua linha 23 é esta: if(alunos.get(dre)== null) alunos.put(dre, new
> Aluno(nome, dre));
>
> formatando:
>
> if(alunos.get(dre)== null) {
>     alunos.put(dre, new Aluno(nome, dre));
> }
>
> desconstruíndo, vc faz 2 chamadas de métodos e uma instanciação. Dentro do
> construtor de Aluno foi tudo bem, sem erros, ou ele estaria no stacktrace.
> logo, foi em uma das chamadas de método.
> Como você faz as duas a partir da mesma referência, só me resta supor que
> ela está nula e a que falhou é a primeira (da avaliação do if).
> Se você formatar como eu fiz verá que a exceção continua na linha 23.
>
> Formatar desta forma, além de seguir a convenção de codificação Java
> auxilia nestes casos (se dentro do if fosse um método de outra referência,
> você saberia imediatamente qual estava nula) e ajuda a reconhecer
> visualmente os blocos de desvio (é por isto que a convenção recomenda esta
> forma).
>
> Abraço
>
> Peter P. Lupo
> http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo
> MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster
> Sun Certified Java Associate - Java Black Belt
> +55 (021) 81742487
>
>
> 2010/7/5 Romulo Freires <[email protected]>
>
>> Tenho um pequeno no meu programa.
>>
>> Exception in thread "main" java.lang.NullPointerException
>>     at Controle.ControladorAluno.criaAluno(ControladorAluno.java:23)
>>     at vista.Main.main(Main.java:21)
>>
>>
>>     public void criaAluno(String nome,String dre)throws
>> AlunoExistenteException{
>>         if(alunos.get(dre)== null) alunos.put(dre, new Aluno(nome, dre));
>> //linha 23
>>
>>         else throw new AlunoExistenteException("Aluno já existente com
>> DRE", dre);
>>     }
>>
>>
>>
>> Essa parte de baixo é referente a linha 21 de outra parte do código.
>>
>> try{
>>             ca.criaAluno("joão", "1111"); // linha 21
>>             System.out.print("Aluno Criado Ok");
>>         }
>>
>>         catch (AlunoExistenteException e){
>>             System.out.print(e);
>>
>>
>> Agradeço qualquer ajuda para corrigir o erro.
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Comp 2 - Geral" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<comp2-geral%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/comp2-geral?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<comp2-geral%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en.

Responder a