Aproveitando o gancho pra um "jabá", eu escrevi um texto sobre como interpretar stacktraces:
http://macoli.wordpress.com/2010/02/20/noobs-e-stacktraces/ Acho que vale a leitura pro pessoal de comp2 =). 2010/7/5 Peter P. Lupo <[email protected]> > :-) > > 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]> > >> tão fácil e eu não vi isso ^^ >> >> vlw peter >> >> +1 ponto pra vc >> >> Em 5 de julho de 2010 19:50, Peter P. Lupo <[email protected]> escreveu: >> >> "Como você faz as duas a partir da mesma referência, só me resta supor >>> que ela está nula (...)" >>> >>> Ela deve deixar de ser nula, ou seja, referenciar uma instância. Neste >>> caso, um Map, certo? >>> >>> Faltou uma atribuição apenas. ;-) >>> >>> 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]> >>> >>>> 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]<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]<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. > -- Abraços Raphael Duarte Paiva Graduando em Ciência da Computação "For millions of years, mankind lived just like the animals. Then something happened which unleashed the power of our imagination. We learned to talk [...]" - Stephen Hawking, 1993 -- 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.
