Page 224 - 6253
P. 224
такому випадку генерується відповідний об'єкт, і керування передається блоку catch,
в якому виконується обробка виняткової ситуації, інакше блок catch пропускається.
Блок try схожий на звичайний логічний блок. Блок catch() схожий на метод, який
приймає єдиний параметр у вигляді посилання на об'єкт-виняток і виконує його
обробку.
Другий підхід демонструється на цьому ж прикладі. Метод може генерувати
винятки, які сам не обробляє, а передає для обробки іншим методам, що викликають
даний метод. В цьому випадку метод повинен оголосити про таку поведінку за
допомогою ключового слова throws, щоб викликаючі методи могли «захистити»
себе від таких виняткових ситуацій. У викликаючих методах має бути передбачена
обробка таких винятків. Форма оголошення такого методу наступна:
Тип ім'яМетоду(список_аргументів) throws список_винятків { }
При цьому, сам метод, оголошений таким чином, може включати блоки
try-catch, а може їх і не включати. Наприклад, метод changeObject() можна оголосити
наступним чином:
public void changeObject(Student ob) throws CloneNotSupportedException {
Object temp = ob.clone();
// Реалізація методу
}
Ключове слово throws вказує, що оброблятися виняткова ситуація буде у
методі з якого викликається метод changeObject(), наприклад:
public void load(Student stud) {
try {
changeObject(stud);
} catch (CloneNotSupportedException e) {
String error = e.toString();
System.err.println(error);
}
}
Якщо у блоці try може бути згенеровано декілька типів винятків у різних
ділянках програмного коду, то потрібна наявність декількох блоків catch (за умови,
223