Exception-Objekt
Es ist nicht ungewöhnlich, dass ein Codeabschnitt mehrere Ausnahmen auslöst. Eine Möglichkeit, damit umzugehen, ist, alle Ausnahmen mit try-catch abzufangen und dann das Exception-Objekt zu nutzen, um festzustellen, welches Problem aufgetreten ist, und Informationen aus der Exception auszugeben, um den Fehler zu debuggen.
Hier passt du die Anwendung SplitTheBill erneut an, um eine generische Exception zu catchen und Daten aus dem Exception-Objekt zu verwenden, um die Ursache des Problems zu verstehen. Exception-Objekte enthalten viele nützliche Informationen, darunter eine Rückverfolgung der Methoden, die zum Problem geführt haben.
Diese Übung ist Teil des Kurses
Datentypen und Exceptions in Java
Anleitung zur Übung
- Fange im catch-Block beliebige
Exceptions mitcatch (Exception e)ab. - Verwende im catch-Block das
Exception-Objekt bzw. die Objekt-Referenz (e) und die MethodegetClass(), um den Typ (die Klasse) der abgefangenen Ausnahme anzuzeigen. - Verwende die Objekt-Referenz (
e) und die MethodegetMessage(), um die Meldung der Ausnahme auszugeben. - Gib den „Stack Trace“ in den Ausgabestrom aus, indem du die Objekt-Referenz (
e) und die MethodeprintStackTrace()verwendest.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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
____.____();
}
}
}