Uso de try-catch en Java

Iniciado por ++c, 9 Octubre 2014, 22:08 PM

0 Miembros y 1 Visitante están viendo este tema.

++c

Hola acabo de hacer mi primer programa en Java y de utilizar igualmente por vez primera el uso de excepciones try-catch. Mi duda es si cuando se genera la excepción, en este caso el introducir un carácter en lugar de un dígito, se puede evitar que pare o rompa la secuencia del programa. Es decir deseo que genere el aviso de "No se puede introducir caracteres" y posteriormente vuelva al menú de inicio. Dejo el código:

Código (java) [Seleccionar]

package paquete;

import java.util.Scanner;
import java.util.InputMismatchException;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado=new Scanner(System.in);
int opcion,opcion2;
float numero,numero2;
try{
do{

System.out.println("******** CALCULADORA  ********");
                        System.out.println("\n1- Realizar una operación");
                        System.out.println("2- Salir");
                        System.out.print("\nIntroduzca su opción: ");
                        opcion=teclado.nextInt();
                     if(opcion==1){
           
            System.out.print("\nIntroduzca el primer argumento: ");
            numero=teclado.nextInt();
            System.out.print("\nIntroduzca el segundo argumento: ");
            numero2=teclado.nextInt();
           
            System.out.println("\n1- Sumar");
            System.out.println("2- Restar");
                System.out.println("3- Multiplicar");
                System.out.println("4- Dividir");
                System.out.print("Opcion: ");
                opcion2=teclado.nextInt();
         
            switch(opcion2){
           
            case 1:
            System.out.println("El resultado de la operacion es: "+  (numero+numero2));
            break;
           
            case 2:
            System.out.println("El resultado de la operacion es: "+ (numero-numero2));
            break;
           
            case 3:
            System.out.println("El resultado de la operacion es: "+ (numero*numero2));
            break;
           
            case 4:
            if(numero2>0)
            System.out.println("El resultado de la operacion es: "+ (numero/numero2));
            else{
            System.out.println("\nEl divisor debe ser mayor de 0");
            }
            break;
           
            default:
            System.out.println("## Gracias por usar la Calculadora ##");
            }
            }
     
}while(opcion==1);
}catch (InputMismatchException ime){
System.out.println("No se puede introducir caracteres");
}
System.out.println("\nHasta Pronto!!");
}
}



Gracias!!

MNicolas

En vez de lanzar una excepción podrías controlar cada vez que vayas un dato lo haces dentro de un bucle y que el bucle se esté repitiendo hasta que el dato sea correcto.

Pablo Videla

Creo que si haces tu try catch dentro del bucle intentará nuevamente.

MNicolas

Cuando ocurre una excepción en el "try" el catch la recoge y desde ahí la gestionas. Pero creo que no puedes volver al principio del código. A no ser que el calcular sea un método y en el catch correspondiente de la excepción llamar al método de nuevo, una especie de recursividad.

Pablo Videla

Cita de: Nicolão en 10 Octubre 2014, 15:52 PM
Cuando ocurre una excepción en el "try" el catch la recoge y desde ahí la gestionas. Pero creo que no puedes volver al principio del código. A no ser que el calcular sea un método y en el catch correspondiente de la excepción llamar al método de nuevo, una especie de recursividad.

Creo que dejar el try catch dentro del do while, no tendría que llamar a nada porque no se caería y seguiria dentro del ciclo.