Tratamento de exceções;

4 respostas
G
olá estou eu aqui novamente. Agora minha dúvida é em relação à exceções. Estou criando este menu virtual, em que a resposta deve ser dada em Interger e ñ String, então usei o "try" para evitar este erro, mas agora, mesmo quando a pessoa insere a alternativa correta ele faz a pergunta novamente. Como evito isso? Qual o erro de sintaxe que cometi? Aqui segue o código:
import javax.swing.JOptionPane;

public class Exceções {

	public static void main(String [] args){

		try {
			Integer.parseInt(JOptionPane.showInputDialog("Faça seu pedido\n1- Costela\n2- Chuleta\n3- Lombinho\n4- Frango"));
			
		}
		catch (NumberFormatException numberFormatException ){
			JOptionPane.showMessageDialog (null,"Por Favor,\n digite o número correspondente ao seu pedido");
		}
		finally 
		{ 

			int x;

			x= Integer.parseInt(JOptionPane.showInputDialog("Faça seu pedido\n1- Costela\n
                             2- Chuleta\n3-  Lombinho\n4- Frango"));

			
			switch ( x ) {

			case 1:
				JOptionPane.showMessageDialog(null,"Boa escolha!");
				JOptionPane.showMessageDialog(null,"Seu pedido será servido em 10 min");
				break;

			case 2:
				JOptionPane.showMessageDialog(null,"Boa escolha!");	
				break;

			case 3:
				JOptionPane.showMessageDialog(null,"Boa escolha!");
				JOptionPane.showMessageDialog(null,"Seu pedido será servido em 10 min");
				break;

			case 4:
				JOptionPane.showMessageDialog(null,"Boa escolha!");
				JOptionPane.showMessageDialog(null,"Seu pedido será servido em 10 min");
				break;
			}

			JOptionPane.showMessageDialog(null,"Algo para Beber?");



		}
	}
}

Como evito isso? Qual o erro de sintaxe que cometi?

desde já agradeço;

Gregori Maus

4 Respostas

M

O problema é que você colocou instruções dentro do finally, o finally será executado independente de entrar no catch. Se você nao quer que algo seja executado caso entre no catch então deve ser colocado dentro do try, se colocar no finally independente de ocorrer uma exceção o finally sempre é executado.

G

Valeu markin pela dica! Mas mesmo assim, ele tá aparecendo duas vezes a msg. Ele me pergunta:[color=red] "Faça seu pedido..."[/color] ; Se eu insiro uma string ele me dá a msg [color=red] "Por Favor, digite o número correspondente ao seu pedido"[/color], pois fiz com que ela apareça caso indique erro. Mas se eu ensiro um Integer que é o correto, ele me mostra novamente a msg "Faça seu pedido..."

try {
			Integer.parseInt(JOptionPane.showInputDialog("Faça seu pedido\n1- Costela\n2- Chuleta\n3- Lombinho\n4- Frango"));

		}
		catch (NumberFormatException numberFormatException ){
	        JOptionPane.showMessageDialog (null,"Por Favor,\n digite o número correspondente ao seu 
                        pedido");
		}

			int x;

			x= Integer.parseInt(JOptionPane.showInputDialog("Faça seu pedido\n1- Costela\n2- Chuleta\n3- 
                        Lombinho\n4- Frango"));

Como é que c faz pra isso ñ ocorrer?

Abraço

M

Olha, dentro do try vc ta chamando o JOpationPane exibindo a mensagem “Faça seu Pedido” e depois do catch vc mostra a mesma mensagem entao sempre vai executar duas vezes, se vc nao quer que isso ocorra tire a segunda linha, eu aconselho você a colocar tudo dentro do try e o catch só com o erro.

G

Valeu cara pelo toque, tá resolvido o problema.

Abraço

Criado 7 de junho de 2009
Ultima resposta 7 de jun. de 2009
Respostas 4
Participantes 2