Page 227 - 6253
P. 227

прикладі створення користувацьких винятків.


                  9.2 Оператор throw



                    Під  час  написання  програмного  коду  часто  виникають  ситуації,  коли

            розробнику  необхідно  самому  ініціювати  генерацію  виняткової  ситуації  для

            вказання,  наприклад,  на  свідомо  помилковий  результат  виконання  операції,  тощо.

            Виняткову  ситуацію  можна  створити  за  допомогою  оператора  throw,  у  випадку,

            якщо  об'єкт-виняток  уже  існує,  або  виконати  його  ініціалізацію  після  оператора

            throw.  Оператор  throw  використовується  для  генерації  виняткової  ситуації.  Для

            цього може бути використаний об'єкт  класу  Throwable або об'єкт його підкласу, а

            також  посилання  на  них.  Загальна  форма  запису  інструкції  throw,  що  генерує

            виняток наступна:

                    throw об’єкт Throwable;

                    Об'єкт-виняток  може  вже  існувати  або  бути  створений  за  допомогою

            оператора new:

                    throw new IOException();

                    Після досягнення оператора throw виконання програмного коду припиняється.

            Найближчий  блок  try  перевіряється  на  наявність  відповідного  обробника  catch.

            Якщо  він  існує,  управління  передається  йому,  інакше  перевіряється  наступний  із

            вкладених операторів try. Ініціалізація об'єкту-винятку без оператора throw жодної

            виняткової ситуації не згенерує.

                    Нижче  наведений  приклад,  в  якому  спочатку  створюється  об'єкт-виняток,

            після чого оператор throw генерує виняток, що обробляється в блоці catch, в якому

            генерується інший виняток.

                    // Генерація виняткових ситуацій

                    import java.io.File;

                    public class ThrowGeneration {

                     public static void connectFile(File file) {

                       if (file == null || !file.exists())

                          throw new IllegalArgumentException();

                                  // Генерація винятку




                                                              226
   222   223   224   225   226   227   228   229   230   231   232