Створення своїх винятків

Програмісти можуть створювати класи виключень, яких, спочатку, не було в Java Такі класи повинні бути успадковані

від одного з існуючих винятків Припустимо, ви займаєтеся продажем велосипедів і повинні перевіряти замовлення покупців Залежно від моделей, у ваш грузовичок може поміститися різну кількість велосипедів Наприклад, ви можете завантажити в нього не більше трьох велосипедів FireBird Створіть підклас класу Exception під назвою TooManyBikesException Тепер, якщо хто – то замовить більше трьох таких велосипедів, викличте виняток: class TooManyBikesException extends Exception{

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

TooManyBikesException (){

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

/ / І передайте йому повідомлення, яке потрібно відобразити

super(

“Ми не зможемо доставити стільки велосипедів за один раз”)

}

}

Цей клас містить тільки конструктор, який одержує повідомлення, яке описує помилку Це повідомлення конструктор передає для зберігання суперкласу Коли в блок catch потрапляє це виняток, можна дізнатися, що саме відбулося, викликавши метод getMessage ()

Уявіть, що користувач вибирає у вікні OrderWindow кілька велосипедів і натискає кнопку Розмістити замовлення Як ви памятаєте з шостої глави, це дія спричинить виклик методу actionPerformed (), який перевірить, чи може замовлення бути виконаний

У наступному прикладі коду показано, як метод checkOrder () цього вікна оголошує, що він може викликати виключення TooManyBikesException Якщо замовлення не поміщається у вантажівку, цей метод викликає виняток, який потім перехоплюється блоком catch Повідомлення про помилку відображається в текстовому полі вікна

class OrderWindow implements ActionListener{

/ / Тут потрібно помістити код для створення компонентів вікна

/ / Користувач натиснув на кнопку Розмістити замовлення

String selectedModel = txtFieldModelgetText()

String selectedQuantity = txtFieldQuantitygetText()

int quantity = IntegerparseInt(selectedQuantity)

void actionPerformed(ActionEvent e){

try{

bikeOrdercheckOrder(&quotFireBird&quot,  quantity)

/ / Наступний рядок не виконується у разі виключення

txtFieldOrderConfirmationsetText(

“Розміщення вашого замовлення завершено)

}  catch(TooManyBikesException e){

txtFieldOrderConfirmationsetText(egetMessage())

}

}

void checkOrder(String bikeModel, int quantity)

throws TooManyBikesException{

/ / Напишіть код, який перевіряє, чи поміщається необхідну

/ / Кількість велосипедів заданої моделі у вантажівку

/ / Якщо не поміщається, зробити наступне:

throw new TooManyBikesException (Неможливо доставити

+ Quantity + велосипедів моделі + BikeModel +

” за одну доставку )

}

}

В ідеальному світі будь-яка програма повинна працювати без проблем У реальності ми повинні бути готові до несподіваних ситуацій Те, що Java змушує писати код, готовий до таких ситуацій, дійсно корисно Обробка помилок за допомогою винятків:

http://downloadoraclecom/javase/tutorial/ess ential/exceptions/indexhtml Практичні вправи

1 Створіть Swing – додаток для розміщення замовлень на покупку велосипедів Воно повинно містити два текстових поля Модель велосипедаіКількість, Кнопку Розмістити замовленняі повідомлення для підтвердження заказа2 Використовуйте код з прикладів з OrderWindow і TooManyBikesException Спробуйте кілька комбінацій моделей велосипедів і кількості, які викликали б виняток

Практичні вправи для розумників і розумниць

1 Змініть додаток з попереднього завдання, замінивши текстове поле Модель велосипедавипадає, меню з декількома моделями, щоб користувач міг вибрати зі списку, замість того, щоб вводити з клавіатури

2 Прочитайте в Інтернеті про Swing – компоненти JComboBox і ItemListener для обробки подій, коли користувач вибирає модель велосипеда

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*