Obiekt wyjątku
Zdarza się, że fragment kodu może zgłaszać wiele różnych wyjątków. Jednym ze sposobów obsługi takiej sytuacji jest przechwycenie wszystkich wyjątków za pomocą bloku try-catch, a następnie skorzystanie z obiektu Exception, aby ustalić, co poszło nie tak i uzyskać przydatne informacje do debugowania problemu.
W tym ćwiczeniu ponownie zmodyfikujesz aplikację SplitTheBill – tym razem tak, aby przechwytywała ogólny wyjątek Exception i korzystała z danych obiektu Exception do zrozumienia przyczyny błędu. Obiekty Exception zawierają wiele przydatnych informacji, w tym ślad metod prowadzących do problemu.
To ćwiczenie jest częścią kursu
Typy danych i wyjątki w Javie
Instrukcje do ćwiczenia
- W bloku catch przechwyć dowolny wyjątek, używając
catch (Exception e). - Skorzystaj z referencji do obiektu
Exception(e) i metodygetClass()w blokucatch, aby wyświetlić typ (klasę) przechwyconego wyjątku. - Użyj referencji do obiektu
Exception(e) i metodygetMessage(), aby wypisać komunikat wyjątku. - Wypisz „ślad stosu" na strumień wyjściowy, używając referencji do obiektu
Exception(e) i metodyprintStackTrace().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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
____.____();
}
}
}