Hola:
El método scanner.nextInt() no lanza excepciones, por lo que nunca te saltarán, escribas lo que escribas.
Hay métodos que lanzan excepciones y en la declaración del método se pone un thows. Echa un ojo, por ejemplo, el
constructor de FileWriter, lleva un throws IOException. Normalmente, si el método no pone throws alguna excepción, no lanzará nada y no tiene sentido poner el try-catch (no sirve para nada).
En otras ocasiones pueden saltar excepciones que no están controladas. Los métodos no dicen que las lanzan, pero ocurren normalmente por algún error de programación. Por ejemplo, un NullPointerException.
En tu caso y si quieres ver el tema de la excepción, en vez de leer un int con scanner, que no lanza excepciones, intenta leer un String y luego convertirlo tu a entero con un Integer.parseInt(), que sí lanza excepciones
Código:
try {
String cadena = leer.nextLine();
int opciones = Integer.parseInt(cadena); // Este sí lanza excepciones
} catch (NumberFormatException e) {
...
}
Se bueno.