НачатьНачать бесплатно

Объект исключения

Нередко один фрагмент кода может генерировать сразу несколько исключений. Один из способов справиться с этим — перехватить все исключения с помощью блока 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
            ____.____();
		}
	}
}
Редактировать и запускать код