Manejo de excepciones con Scanner.nextInt () vs. Scanner.nextLine ()

Esta pregunta es únicamente para fines educativos. Tomé el siguiente código de un libro de texto en Java y tengo curiosidad por qué input.nextLine () se usa en el bloque catch.

Traté de escribir el programa usando input.nextInt () en su lugar. El programa ya no detectaría la excepción correctamente. Cuando pasé un valor distinto de un entero, la consola mostró el conocido mensaje de error "Excepción en el hilo ...".

Cuando eliminé esa línea de código por completo, la consola ejecutaría sin cesar la expresión System.out.println () del bloque catch.

¿Cuál es el propósito de Scanner.nextLine ()? ¿Por qué cada uno de estos escenarios se desarrolló de manera diferente?

import java.util.*;

public class InputMismatchExceptionDemo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        boolean continueInput = true;

    do {
        try{
            System.out.print("Enter an integer: ");
            int number = input.nextInt();

            System.out.println(
                    "The number entered is " + number);

            continueInput = false;
        }
        catch (InputMismatchException ex) {
            System.out.println("Try again. (" +
                    "Incorrect input: an integer is required)");
            input.nextLine();
            }
        }
        while (continueInput);
    }   
}

Gracias a todos

Respuestas a la pregunta(1)

Su respuesta a la pregunta