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
   219   220   221   222   223   224   225   226   227   228   229