try / catch mit InputMismatchException erzeugt eine Endlosschleife

Also erstelle ich ein Programm, das Eingaben vom Benutzer übernimmt. Ich habe einen scheinbar sehr einfachen Try / Catch-Block, der, wenn der Benutzer kein int eingibt, den Block wiederholen sollte, bis er dies tut. Hier ist der relevante Teil des Codes:

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


public class Except {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        boolean bError = true;
        int n1 = 0, n2 = 0, nQuotient = 0;

        do {
            try {
                System.out.println("Enter first num: ");
                n1 = input.nextInt();
                System.out.println("Enter second num: ");
                n2 = input.nextInt();
                nQuotient = n1/n2;
                bError = false;
            } 
            catch (Exception e) {
                System.out.println("Error!");
            }
        } while (bError);

        System.out.printf("%d/%d = %d",n1,n2, nQuotient);
    }
}

Wenn ich für die zweite Ganzzahl eine 0 eingebe, macht der Versuch / Fang genau das, was er soll, und zwingt mich, ihn erneut einzugeben. Wenn ich jedoch eine InputMismatchException wie 5.5 für eine der Zahlen eingebe, wird meine Fehlermeldung nur in einer Endlosschleife angezeigt. Warum passiert das und was kann ich dagegen tun? (Übrigens habe ich versucht, InputMismatchException explizit als Argument für catch einzugeben, aber das Problem wurde nicht behoben.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage