Page 233 - 6253
P. 233
}
class WhiteStone extends Stone { // Старий клас
public void build() {
System.out.println("Біла кам'яна куля");
}
}
public class StoneLоgic { // Старий клас
public static void infoStone(Stone stone) {
try {
stone.build();
// Обробка винятку IOException не передбачена
} catch (FileNotFoundException e) {
System.err.print("Файл не знайдено");
}
}
}
class BlackStone extends Stone { // Новий клас
// Помилка компіляції
public void build() throws IOException {
System.out.println("Чорна кам'яна куля");
// Реалізація методу
}
}
Якщо під час оголошенні методу суперкласу інструкція throws присутня, то в
підкласі ця інструкція може бути взагалі відсутня або в ній можуть бути оголошені
будь-які винятки, що є підкласами винятків з блоку throws методу суперкласу.
Друге правило дозволяє захистити розробника від генерації невідомих йому
виняткових ситуацій при створенні об'єкта класу.
// Спільне використання конструкторів та виняткових ситуацій
class FileInput { // Старий клас
public FileInput(String filename) throws FileNotFoundException {
232