IniziaInizia gratis

Oggetto Exception

Non è raro che un pezzo di codice generi diverse eccezioni. Un modo per gestire la situazione è usare un blocco try-catch che intercetti tutte le eccezioni e poi utilizzare l’oggetto Exception per capire quale problema si è verificato e stampare informazioni utili per fare debug.

Qui modificherai di nuovo l’applicazione SplitTheBill per catch-are una Exception generica e usare i dati dell’oggetto Exception per capire la causa del problema. Gli oggetti Exception contengono molte informazioni utili, incluso il trace dei metodi che hanno portato al problema.

Questo esercizio fa parte del corso

Tipi di dati ed eccezioni in Java

Visualizza il corso

Istruzioni dell'esercizio

  • Nel blocco catch, intercetta qualsiasi Exception usando catch (Exception e).
  • Usa l’oggetto Exception, il riferimento (e) e il metodo getClass() nel blocco catch per visualizzare il tipo (classe) dell’eccezione catturata.
  • Usa il riferimento all’oggetto Exception (e) e il metodo getMessage() per stampare il messaggio dell’eccezione.
  • Stampa lo "stack trace" sullo stream di output usando il riferimento all’oggetto Exception (e) e il metodo printStackTrace().

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

class SplitTheBill {
	public static void main(String[] args) {
		BigDecimal bill = new BigDecimal(125.50);
		computeEachBill(bill, 5);
		computeEachBill(bill, 0);
	}

	public static void computeEachBill(BigDecimal bill, int people) {
		try {
			BigDecimal numPeople = new BigDecimal(people);
			BigDecimal individualBill = bill.divide(numPeople);
			System.out.println("Bill for each person is: " + individualBill);
            // Catch any exception
		} catch (____ ____) {
			System.out.println("You didn't provide a positive number of people to split the bill among.");
            // Print the type (class) of exception
			System.out.println("Type of exception: " + ____.____());
            // Print the exception message
			System.out.println(____.____());
            // Print the stack trace
            ____.____();
		}
	}
}
Modifica ed esegui il codice