//******************************************************************** // ExceptionScope.java // // Mostra la propagazione delle eccezioni. //******************************************************************** public class ExceptionScope { //----------------------------------------------------------------- // Intercetta e gestisce l'eccezioni sollevate dal metodo level3. //----------------------------------------------------------------- public void level1() { System.out.println("Inizio livello 1."); try { level2(); } catch (ArithmeticException problema) { System.out.println(); System.out.println("Il messaggio che segnala l'eccezione: " + problema.getMessage()); System.out.println(); System.out.println("La traccia dello stack delle chiamate:"); problema.printStackTrace(); System.out.println(); } System.out.println("Fine livello 1."); } //----------------------------------------------------------------- // Metodo per creare un livello intermedio. // L'eccezione viene propagata al livello superiore. //----------------------------------------------------------------- public void level2() { System.out.println("Inizio livello 2."); level3(); System.out.println("Fine livello 2."); } //----------------------------------------------------------------- // Effettua un calcolo che produce un'eccezione. // Questa non viene intercetta ma viene propagata al livello esterno. //----------------------------------------------------------------- public void level3 () { int numeratore = 10, denominatore = 0; System.out.println("Inizio livello 3."); int risultato = calcolaQuoziente(numeratore, denominatore); System.out.println("risultato: " + risultato); System.out.println("Fine livello 3."); } private int calcolaQuoziente (int x, int y) { return x / y; } }