Объект исключения
Нередко один фрагмент кода может генерировать сразу несколько исключений. Один из способов справиться с этим — перехватить все исключения с помощью блока try-catch, а затем использовать объект exception, чтобы определить, что именно пошло не так, и получить отладочную информацию.
Здесь вы снова доработаете приложение SplitTheBill: добавите обработку обобщённого исключения Exception и воспользуетесь данными из объекта Exception, чтобы разобраться в причине проблемы. Объекты Exception содержат много полезной информации, в том числе трассировку методов, которая привела к ошибке.
Это упражнение является частью курса
Типы данных и исключения в Java
Инструкции к упражнению
- В блоке
catchперехватите любое исключение с помощью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
____.____();
}
}
}