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.
