Page 232 - 6253
P. 232

}

                     public Exception getHiddenException() {

                       return _hidden;

                     }

                    }

                    Однією  з  основних  концепцій  мови  Java  є  повторне  використання

            програмного  коду,  тому  розробники  постаралися  передбачити  і  закодувати  усі

            можливі  виняткові  ситуації.  Тому  під  час  написання  реальних  програм  можна

            цілком обійтися без створення власних класів винятків.


                  9.5 Наслідування та виняткові ситуації



                    Створення складних розподілених систем рідко обходиться без використання

            концепції  наслідування  та  обробки  виняткових  ситуацій.  Для  винятків,  що

            передбачають перевірку існує два наступних правила:

                        перевизначений метод у підкласі не може містити в блоці throws винятків,

                         які не обробляються у відповідному методі суперкласу;

                        конструктор  підкласу  повинен  включити  у  свій  блок  throws  усі  класи

                         винятків  або  їх  суперкласи  з  блоку  throws  конструктора  суперкласу,  до

                         якого він звертається при створенні об'єкта.

                    Перше  правило  має  безпосереднє  відношення  до  розширення  програмного

            додатку.  Нехай  при  додаванні  в  ланцюжок  спадкування  нового  класу  його

            поліморфний метод включив в блок throws новий виняток, що перевіряється. Тоді

            методи, що реалізують логіку програми, приймаючи об'єкт нового класу як параметр

            і  викликаючи  даний  поліморфний  метод,  не  готові  виконувати  обробку  нової

            виняткової ситуації, оскільки раніше в цьому не було необхідності. Тому при спробі

            додавання  нового  checked-винятка  в  поліморфний  метод  компілятор  видасть

            повідомлення про помилку.

                    // Спільне використання поліморфізму та виняткових ситуацій

                    class Stone { // Старий клас


                     public void build() throws FileNotFoundException {
                       // Реалізація методу




                                                              231
   227   228   229   230   231   232   233   234   235   236   237