Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: ++c en 9 Octubre 2014, 22:08 PM

Título: Uso de try-catch en Java
Publicado por: ++c en 9 Octubre 2014, 22:08 PM
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!!
Título: Re: Uso de try-catch en Java
Publicado por: MNicolas en 10 Octubre 2014, 11:52 AM
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.
Título: Re: Uso de try-catch en Java
Publicado por: Pablo Videla en 10 Octubre 2014, 14:40 PM
Creo que si haces tu try catch dentro del bucle intentará nuevamente.
Título: Re: Uso de try-catch en Java
Publicado por: MNicolas 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.
Título: Re: Uso de try-catch en Java
Publicado por: Pablo Videla en 10 Octubre 2014, 16:05 PM
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.