Sim, eu falei isso hoje na monitoria. É que eles ainda não viram exceção, por isso ele colocou assim. Quando entender bem a hierarquia delas, não fará mais assim (eu espero). Lembrando que Exception deve ser sempre a última a ser tratada, porque é a classe mais alta.
[]'s 2011/4/29 Júlio Zynger <[email protected]> > Não sou monitor da matéria e provavelmente não vai te ajudar nesse > problema, mas posso dar uma dica? Sempre que fizer um catch, procura usar a > Exception que você espera receber no caso de um erro. Existem algumas > situações em que mais de uma exception pode aparecer potencialmente. Se você > faz catch(Exception e), trata as duas com um mesmo bloco de código, quando > na realidade o certo é tratar cada uma de uma forma diferente, dependendo da > Exception. > > Por exemplo: > > >> try{ >> trecho de codigo >> }catch(NullPointerException npe){ >> trata o primeiro tipo >> }catch(IndexOutOfBoundsException npe){ >> trata o segundo tipo >> } >> segue o código > > > Fica a dica :) > > Em 29 de abril de 2011 02:57, Zaedy Sayão <[email protected]> escreveu: > > Agora que li tudo (ainda não sei o motivo do erro), vou aproveitar pra >> falar uma coisa que vi que entendeu errado. >> >> Quando um código dá uma exceção (lança, como dizemos), ele vai pro catch >> imediatamente. Então, se a linha 20 lança uma exceção, a linha 21 não vai >> ser executada. >> >> O resto a ser executado será o código depois do catch. >> >> Isso responde porque não está entrando no else, agora o motivo do erro >> ainda não sei. >> >> []'s >> >> 2011/4/29 Fellipe Sombra <[email protected]> >> >>> Bom, eu já estava usando o try/catch em algumas ocasiões para verificar >>> se a entrada era um inteiro e não uma string. >>> >>> Mas agora que estou "melhorando" minha loja, botando para todas as opções >>> serem acessadas por números e não strings eu me deparei com 2 situações que >>> eu não estou entendendo porque está entrando no catch. >>> >>> Nessas 2 funções( comprarArma() e vender() ): >>> >>> public void comprarArma(Personagem personagem){ >>> boolean inArmas = true; >>> int entrada; >>> while(inArmas){ >>> System.out.println("Temos as seguintes armas:"); >>> mostraArmas(); >>> System.out.println("Seu dinheiro: "+personagem.getDinheiro()+" dolares"); >>> try{ >>> entrada = scanner.nextInt(); >>> if(checaItem(itensLoja.get(entrada-1).getNome(),"arma")){ >>> comprarItem(personagem,item(itensLoja.get(entrada-1).getNome())); >>> } >>> else if(entrada == (itensLoja.size()+1)){ >>> inArmas = false; >>> } >>> else{ >>> System.out.println("Comando Inválido else inArmas"); >>> } >>> }catch (Exception e) { >>> System.out.println("Comando Inválido catch inArmas."); >>> } >>> } >>> } >>> public void vender(Personagem personagem){ >>> boolean inVender = true; >>> int entrada; >>> while(inVender){ >>> System.out.println("O que você deseja vender?"); >>> mochilaVenda(personagem); >>> System.out.println("Seu dinheiro: "+personagem.getDinheiro()+" >>> dolares"); >>> try{ >>> entrada = scanner.nextInt(); >>> >>> if(checaItemVenda(personagem.itensP.get(entrada-1).getNome(),personagem)){ >>> >>> venderItem(personagem,item(personagem.itensP.get(entrada-1).getNome()),item(itensLoja.get(entrada-1).getNome())); >>> } >>> else if(entrada == (mostrouImochila+1)){ >>> inVender = false; >>> } >>> else{ >>> System.out.println("Comando Inválido else inVender"); >>> } >>> }catch(Exception e){ >>> System.out.println("Comando Inválido catch inVender"); >>> } >>> } >>> } >>> >>> Vou dar situações como exemplo para vocês entenderem o que acontece: >>> >>> situação exemplo comprarArmas(): >>> >>> Temos as seguintes armas: >>> 1 - Espada Enferrujada(x6) - 50 dolares >>> 2 - Espada de Metal(x3) - 150 dolares >>> 3 - Sair >>> Seu dinheiro: 200 dolares >>> 1 >>> Digite a quantidade de Espada Enferrujada que você deseja >>> 2 >>> Você comprou 2 Espada Enferrujada e gastou 100 dolares >>> Temos as seguintes armas: >>> 1 - Espada Enferrujada(x4) - 50 dolares >>> 2 - Espada de Metal(x3) - 150 dolares >>> 3 - Sair >>> Seu dinheiro: 100 dolares >>> 3 >>> Comando Inválido catch inArmas. >>> Temos as seguintes armas: >>> 1 - Espada Enferrujada(x4) - 50 dolares >>> 2 - Espada de Metal(x3) - 150 dolares >>> 3 - Sair >>> Seu dinheiro: 100 dolares >>> >>> Quando digito o valor correspondente a uma opção que seja um item ele >>> funciona, porém quando digito a opção correspondente ao Sair ele entra no >>> catch... assim como qualquer outro número que não seja a opção de um númore. >>> Por exmeplo 4,5,6... qualquer um desses entram no catch, quando deveriam >>> entrar no 'else'. >>> >>> Eu ja até tentei botar : >>> >>> else if(entrada == (3){ >>> inArmas = false; >>> } >>> >>> Só para testar se assim funcionava, mas mesmo assim entrou no catch >>> quando eu digitei 3. >>> >>> No vender() Acontece a mesma situação , não consigo acessar o Sair >>> também. >>> >>> Não sei o que estou fazendo de errado. Se alguém puder ajudar fico >>> grato. >>> >>> >>> -- >>> 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. >>> >> >> >> >> -- >> Zaedy Dantas Sayão >> Graduando em Ciência da Computação DCC/UFRJ >> http://www.manufato.com.br/ >> MSN: [email protected] >> >> -- >> 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. >> > > > > -- > [image: JulioZynger]Júlio Zynger > Site pessoal: http://dcc.ufrj.br/~julioz > Twitter: @juliozynger > > -- > 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. > -- Zaedy Dantas Sayão Graduando em Ciência da Computação DCC/UFRJ http://www.manufato.com.br/ MSN: [email protected] -- 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.
