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
   228   229   230   231   232   233   234   235   236   237   238