¿Se detectó una excepción de Java, pero se volvió a lanzar automáticamente?

Para la escuela, estaba creando un programa de Geometría simple que pedía la cantidad de esquinas y coordenadas de una figura. Para evitar la entrada incorrecta (es decir, caracteres en lugar de enteros), pensé que usaría el manejo de excepciones. Parece funcionar bien, pero una vez que tengo una entrada incorrecta, detecta el error y establece algunos valores predeterminados. Debería continuar pidiendo más información, pero de alguna manera estos terminan atrapando la misma excepción sin solicitar una nueva entrada.

public static void main(String[] args) {
   Scanner stdin = new Scanner(System.in);

    try {
        int hoeken;
        System.out.print("How many corners does your shape have? ");

        try {
            hoeken = stdin.nextInt();
            if(hoeken < 3) throw new InputMismatchException("Invalid side count.");
        }
        catch(InputMismatchException eVlakken){
            System.out.println("Wrong input. Triangle is being created");
            hoeken = 3;
        }

        Veelhoek vh = new Veelhoek(hoeken);
        int x = 0, y = 0;

        System.out.println("Input the coordinates of your shape.");
        for(int i = 0; i < hoeken; i++){
            System.out.println("Corner "+(i+1));                
            try {
                System.out.print("X: ");
                x = stdin.nextInt();
                System.out.print("Y: ");
                y = stdin.nextInt();                    
            } catch(InputMismatchException eHoek){
                x = 0;
                y = 0;
                System.out.println("Wrong input. Autoset coordinates to 0, 0");
            }                
            vh.setPunt(i, new Punt(x, y));
        }

        vh.print();

        System.out.println("How may points does your shape needs to be shifted?");
        try {
            System.out.print("X: ");
            x = stdin.nextInt();
            System.out.print("Y: ");
            y = stdin.nextInt();

        } catch(InputMismatchException eShift){
            System.out.println("Wrong input. Shape is being shifted by 5 points each direction.");
            x = 5;
            y = 5;
        }            

        vh.verschuif(x, y);
        vh.print();

    } catch(Exception e){
        System.out.println("Unknown error occurred. "+e.toString());
    } 
}

Por lo tanto, si el usuario comienza tratando de crear una forma con 2 lados o ingresa un carácter en lugar de un entero, produce la excepción InputMismatchException y la maneja. Luego debería continuar el programa preguntando las coordenadas de las esquinas, pero en su lugar sigue lanzando nuevas excepciones y los manejadores lo hacen.

¿Qué va mal?

Respuesta 1

Tengo un solo archivo que envía SMS a diferentes redes móviles de acuerdo con los argumentos de la línea de comando que le pasaron. Vodafone, 3 network, T-Mobile, O2 ... etc. Entonces, cuando se pasa el argumento $ Run ...

Estoy escribiendo un proyecto java para insertar datos en neo4j usando una consulta de cifrado. Quiero evitar que neo4j cree un nodo duplicado, en lugar de vincular el otro nodo con el nodo existente. CREATE (n1: nodo {...

Tengo archivos de texto almacenados en GAE Blobstore. Ahora quiero leer el contenido del archivo y verlo en mi navegador, sin descargar realmente el archivo. Estoy accediendo al servlet haciendo clic en ...

Soy un veterano de Java, pero he estado usando JDK8 durante mucho tiempo. Decidí que finalmente quiero actualizar, así que he estado usando Java11. He estado disfrutando de las nuevas funciones, pero he llegado al punto en que ...