Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • W bloku catch przechwyć dowolny wyjątek, używając catch (Exception e).
  • Skorzystaj z referencji do obiektu Exception (e) i metody getClass() w bloku catch, aby wyświetlić typ (klasę) przechwyconego wyjątku.
  • Użyj referencji do obiektu Exception (e) i metody getMessage(), aby wypisać komunikat wyjątku.
  • Wypisz „ślad stosu" na strumień wyjściowy, używając referencji do obiektu Exception (e) i metody printStackTrace().

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
            ____.____();
		}
	}
}
Edytuj i uruchom kod