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.

Responder a