Aan de slagGa gratis aan de slag

Exception-object

Het is niet ongebruikelijk dat een stuk code meerdere exceptions gooit. Eén manier om dit aan te pakken is om alle exceptions te try-catchen en vervolgens het exception-object te gebruiken om te bepalen wat er is gebeurd en informatie uit de Exception te tonen om het probleem te debuggen.

Hier ga je de SplitTheBill-applicatie opnieuw aanpassen om een generieke Exception te catchen en gegevens uit het Exception-object te gebruiken om de oorzaak van het probleem te achterhalen. Exception-objecten bevatten veel nuttige informatie, waaronder een trace van methoden die naar het probleem hebben geleid.

Deze oefening maakt deel uit van de cursus

Gegevenstypen en uitzonderingen in Java

Cursus bekijken

Oefeninstructies

  • Vang in de catch-block elke Exception op met catch (Exception e).
  • Gebruik de Exception en objectreferentie (e) en de methode getClass() in de catch-block om het type (de klasse) van de opgevangen exception weer te geven.
  • Gebruik de objectreferentie van de Exception (e) en de methode getMessage() om het bericht van de exception af te drukken.
  • Print de "stack trace" naar de uitvoerstroom met de objectreferentie van de Exception (e) en de methode printStackTrace().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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
            ____.____();
		}
	}
}
Code bewerken en uitvoeren