try / catch z InputMismatchException tworzy nieskończoną pętlę

Buduję więc program, który pobiera inty z danych wejściowych użytkownika. Mam coś, co wydaje się być bardzo prostym blokiem try / catch, który, jeśli użytkownik nie wprowadzi int, powinien powtórzyć blok, dopóki tego nie zrobią. Oto odpowiednia część kodu:

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);
    }
}

Jeśli wprowadzę 0 dla drugiej liczby całkowitej, wtedy try / catch robi dokładnie to, co ma i każe mi to zrobić ponownie. Jeśli jednak mam wyjątek InputMismatchException, na przykład wprowadzając wartość 5.5 dla jednej z liczb, po prostu wyświetla się mój komunikat o błędzie w nieskończonej pętli. Dlaczego tak się dzieje i co mogę z tym zrobić? (Nawiasem mówiąc, próbowałem jawnie wpisać InputMismatchException jako argument do przechwycenia, ale to nie rozwiązało problemu.

questionAnswers(7)

yourAnswerToTheQuestion