codice:
import java.util.*;
public class DivisioneEx
{
	public static int quoziente(int numeratore, int denominatore) throws ArithmeticException
	{
		return numeratore / denominatore;
	}
	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(System.in);
		boolean continueLoop = true;
		
		do
		{
			try
			{
				System.out.print("Inserisci numeratore: ");
				int numeratore = scanner.nextInt();
				
				System.out.print("Inserisci denominatore: ");
				int denominatore = scanner.nextInt();
				
				int risultato = quoziente(numeratore,denominatore);
				
				System.out.printf("\n%d / %d = %d\n",numeratore,denominatore,risultato);
				
				continueLoop = false;
			}
			catch (InputMismatchException Mismatch)
			{
				System.out.printf("\nEccezione: %s\n",Mismatch);
				scanner.nextLine();
				System.out.println("Devi inserire valori interi. Riprova\n");
			}
			catch (ArithmeticException Arithmetic)
			{
				System.out.printf("\nEccezione: %s\n",Arithmetic);
				System.out.println("Devi inserire un denominatore diverso da 0. Riprova\n");
			}
		} while (continueLoop);
	}
}
Ciao a tutti. Quello che non mi è chiaro in questo programma è:

1) Perchè il programma funziona correttamente anche se al metodo quoziente non specifichiarmo che può ricevere un'eccezione InputMismatchException oltre a ArithmeticException?

2) Perchè il programma funziona correttamente anche se al metodo quoziente non specifichiamo nessuna clausola throws?

3) Cosa fa esattamente scanner.nextLine()?

Spero che riusciate a rispondermi, ciao ^^