Об'єкт Exception
Не дивно, що певний фрагмент коду може кидати кілька винятків. Один зі способів упоратися з цим — перехопити всі винятки блоком try-catch, а потім використати об'єкт Exception, щоб з'ясувати, що сталося, і вивести інформацію з Exception для налагодження проблеми.
Тут ви знову зміните застосунок SplitTheBill, щоб catch перехоплював загальний Exception і використав дані з об'єкта Exception для розуміння причини проблеми. Об'єкти Exception містять багато корисної інформації, зокрема трасу методів, що привели до помилки.
Ця вправа є частиною курсу
Типи даних і винятки в Java
Інструкції до вправи
- У блоці catch перехопіть будь-який
Exception, використавшиcatch (Exception e). - Скористайтеся об'єктом
Exceptionта його посиланням (e) і методомgetClass()у блоціcatch, щоб показати тип (клас) перехопленого винятку. - Використайте посилання на об'єкт
Exception(e) і методgetMessage(), щоб вивести повідомлення винятку. - Виведіть «стек викликів» у потік виведення за допомогою посилання на об'єкт
Exception(e) і методуprintStackTrace().
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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
____.____();
}
}
}