Intenta atrapar bloque causando bucle infinito?

Estoy escribiendo un sencillo juego de consola java. Uso el escáner para leer la entrada de la consola. Estoy tratando de verificar que pido un entero, no recibo un error si se ingresa una letra. Intenté esto:

boolean validResponce = false; int choice = 0; while (!validResponce) { try { choice = stdin.nextInt(); validResponce = true; } catch (java.util.InputMismatchException ex) { System.out.println("I did not understand what you said. Try again: "); } } 

pero parece crear un bucle infinito, simplemente imprimiendo el bloque catch. Qué estoy haciendo mal.

Y sí, soy nuevo en Java