Главная » Java » Создание своих исключений

0

Программисты   могут  создавать  классы   исключений,  которых,изначально, не было в Java.  Такие классы  должны  быть унаследованы

от  одного  из   существующих  исключений.    Предположим,  вы занимаетесь   продажей велосипедов и должны  проверять заказы покупателей.   В зависимости от моделей, в ваш грузовичок  может поместиться разное количество велосипедов. Например,  вы можете  загрузить  в  него  не  более  трех велосипедов FireBird.  Создайте  подкласс  класса  Exception  под  названием TooManyBikesException.  Теперь,  если  кто-­?то  закажет  более  трех таких велосипедов, вызовите исключение: class TooManyBikesException extends Exception{

// Конструктор

TooManyBikesException (){

// Просто вызовите конструктор суперкласса

// и передайте ему сообщение, которое нужно отобразить

super(

"Мы не сможем доставить столько велосипедов за один раз.");

}

}

Этот класс содержит только конструктор, получающий сообщение, которое описывает ошибку. Это сообщение конструктор передаёт для хранения  суперклассу.  Когда  в  блок  catch  попадает  это  исключение, можно узнать, что именно произошло, вызвав метод getMessage().

Представьте,   что   пользователь   выбирает   в   окне   OrderWindow несколько велосипедов и нажимает кнопку Разместить заказ.  Как  вы помните из   шестой главы,   это   действие   повлечет   вызов   метода actionPerformed(),  который  проверит,  может  ли  заказ быть выполнен.

В следующем примере кода показано, как  метод checkOrder() этого окна    объявляет,   что   он   может   вызвать   исключение TooManyBikesException.  Если заказ  не помещается в грузовик, этот метод  вызывает  исключение,  которое  затем  перехватывается  блоком catch. Сообщение об ошибке отображается в текстовом поле окна.

class OrderWindow implements ActionListener{

// Здесь нужно поместить код для создания компонентов окна.

// Пользователь нажал на кнопку Разместить заказ

String selectedModel = txtFieldModel.getText();

String selectedQuantity = txtFieldQuantity.getText();

int quantity = Integer.parseInt(selectedQuantity);

void actionPerformed(ActionEvent e){

try{

bikeOrder.checkOrder("FireBird",  quantity);

//следующая строка не выполняется в случае исключения

txtFieldOrderConfirmation.setText(

"Размещение вашего заказа завершено");

}  catch(TooManyBikesException e){

txtFieldOrderConfirmation.setText(e.getMessage());

}

}

void checkOrder(String bikeModel, int quantity)

throws TooManyBikesException{

//Напишите код, который проверяет, помещается ли требуемое

//количество велосипедов заданной модели в грузовик.

//Если не помещается, сделать следующее:

throw new TooManyBikesException("Невозможно  доставить"

+ quantity + " велосипедов модели " + bikeModel +

" за одну доставку" );

}

}

В идеальном мире любая программа должна работать без  проблем.  В реальности  мы  должны  быть  готовы  к неожиданным  ситуациям.  То, что  Java   заставляет   писать   код,   готовый   к  таким   ситуациям, действительно полезно.                Обработка  ошибок с помощью исключений:

http://download.oracle.com/javase/tutorial/ess ential/exceptions/index.html Практические упражнения

              1.  Создайте  Swing-­?приложение   для размещения заказов на покупку велосипедов. Оно  должно содержать два текстовых поля  Модель велосипеда   и  Количество, кнопку Разместить  заказ    и    сообщение    для подтверждения заказа.2. Используйте   код   из   примеров   с OrderWindow  и  TooManyBikesException. Попробуйте несколько комбинаций моделей велосипедов    и    количества,    которые вызывали бы исключение.

Практические упражнения для умников и умниц

1.  Измените  приложение  из  предыдущего  задания,   заменив  текстовое поле Модель  велосипеда    выпадающим    меню   с несколькими  моделями, чтобы  пользователь  мог  выбрать из  списка, вместо того, чтобы вводить с клавиатуры.

2. Прочитайте   в Интернете  про   Swing-­? компоненты JComboBox и ItemListener  для обработки событий, когда пользователь  выбирает модель велосипеда.

Источник: Java  Programming for Kids, Parents and Grandparents by Yakov Fain

По теме:

  • Комментарии