Colocar variavel pra ler somente inteiro

Ola, estou fazendo um exercicio da faculdade que consiste em criar uma agenda, o meu problema é que eu quero que a variavel que eu uso para opção no menu leia só inteiro, fiz um teste e na hora que eu coloco qualquer coisa que nao seja um numero ele da o seguinte erro.

Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)

Me desculpem qualquer erro, meu primeiro topico no site.

E o que você fez? Como fez?

        System.out.println("1 - Novo evento");
        System.out.println("2 - Ver eventos");
        System.out.println("0 - Sair");
        System.out.print("\nOpção: ");

        opc = ler.nextInt();

        try {
            if (opc < 0 || opc > 2) {

                throw new NumberFormatException("\nEscolha uma opção valida.\n");
            }
        } catch (NumberFormatException e) {
            System.out.println(e.getMessage());
        }

No caso fiz uma exceção caso a variável seja menos que 0 ou maior que 2.

Estava tentando usar o NumberFormatException mas ele continua finalizando o programa quando eu coloco qualquer coisa que nao seja um inteiro.

Esqueça os nextBlablabla (nextInt, nextDouble, nextFloat, etc)
Use o nextLine

String input = ler.nextLine();
try {
    opc = Integer.valueOf(input);
    if (opc < 0 || opc > 2) {
       throw new NumberFormatException("\nEscolha uma opção valida.\n");
   }
} catch (Exception ex) {
    System.out.println(e.getMessage());
}

muito obrigado.