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
Oefeninstructies
- Vang in de catch-block elke
Exceptionop metcatch (Exception e). - Gebruik de
Exceptionen objectreferentie (e) en de methodegetClass()in decatch-block om het type (de klasse) van de opgevangen exception weer te geven. - Gebruik de objectreferentie van de
Exception(e) en de methodegetMessage()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 methodeprintStackTrace().
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
____.____();
}
}
}