Page 230 - 6253
P. 230

}

                     public static void main(String[] args) {

                       try {

                          setAge(23);

                          setAge(-5);

                       } catch (RuntimeException e) {

                          e.printStackTrace();

                       }

                       System.out.print(getAgeWoman());

                     }

                    }

                    У методі setAge() через генерацію винятку відбувається передчасний вихід з

            блоку try, але до виходу із методу виконується блок finally. Метод getAgeWoman()

            завершує  роботу  виконанням  оператора  return  в  блоці  try,  але  при  цьому  перед

            виходом з методу виконується також код блоку finally.


                  9.4 Власні виняткові ситуації



                    Розробник може створити власний виняток, шляхом створення підкласу класу

            Exception і пізніше використовувати його при обробці виняткових ситуацій, які не є

            винятками  з  точки  зору  мови,  але  порушують  логіку  програми.  Наприклад,  поява

            об'єктів типу Student з від'ємним значенням поля age.

                    // Виклик власної виняткової ситувації RunnerLogic з методу salary()

                    public class RunnerLogic {

                     public static double salary(int coeff) throws SalaryException {

                       double d;

                       try {

                          if ((d = 10-100/coeff) < 0)

                                  throw new SalaryException("Від'ємна заробітня плата");

                          else

                                  return d;

                       } catch (ArithmeticException e) {




                                                              229
   225   226   227   228   229   230   231   232   233   234   235