Page 55 - 4657
P. 55
}
} }
У цьому прикладі обробка виключення проводиться в два
прийоми. Метод main створює контекст для виключення і
викликає demoproc. Метод demoproc також установлює контекст
для обробки виключення, створює новий об'єкт класу
NullPointerException і за допомогою оператора throw збуджує це
виключення. Виключення перехоплюється в наступному рядку
усередині методу demoproc, причому об'єкт-виключення
доступного коду оброблювача через параметр e. Код
оброблювача виводить повідомлення про те, що порушене
виключення, а потім знову збуджує його за допомогою
оператора throw, у результаті чого воно передається
оброблювачу виключень у методі main. Нижче приведений
результат, полученний при запуску цього прикладу.
С:\> java ThrowDemo
caught inside demoproc
recaught: java.lang.NullPointerException: demo
throws
Якщо метод здатний збуджувати виключення, що він сам не
обробляє, він повинний оголосити про таке поводження, щоб
зухвалі методи могли захистити себе від цих виключень. Для
завдання списку виключень, що можуть збуджуватися методом,
використовується ключове слово throws. Якщо метод у явному
виді (тобто за допомогою оператора throw) збуджує
виключеннявідповідного класу, тип класу виключень повинний
бути вказаний в операторі throws в оголошенні цього методу. З
обліком цього наш колишній синтаксис визначення методу
повинний бути розширений наступним чином:
тип ім'я_методу(список аргументів) throws
список_виключень {}
Нижче приведений приклад програми, у якій метод
procedure намагається збудити виключення, не забезпечуючи ні
програмного коду для його перехоплення, ні оголошення цього
53