Page 53 - 4657
P. 53

а = 0
            div by 0: java.lang.ArithmeticException: / by zero
            C:\> java MultiCatch 1
            a = 1
            array index oob:
            java.lang.ArrayIndexOutOfBoundsException: 42

                  Вкладені оператори try

                 Оператори  try  можна  вкладати  один  в  одного  аналогічно
            тому, як можна створювати вкладені області видимості змінних.
            Якщо в оператора try низького рівня немає роздягнутого catch,
            що відповідає збудженому виключенню, стек буде розгорнутий
            на  одну  ступінь  вище,  і  в  пошуках  придатного  оброблювача
            будуть перевірені  розділи catch зовнішнього оператора try. Ось
            приклад, у якому два оператори try вкладені один в одного  за
            допомогою виклику методу.

            class MultiNest {
            static void procedure() {
            try {
            int c[] = { 1 };
            c[42] = 99;
            }
            catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("array index oob: " + e);
            } }
            public static void main(String args[]) {
            try {
            int a = args.length();
            System.out.println("a = " + a);
            int b = 42 / a;
            procedure();
            }
            catch (ArithmeticException e) {
            System.out.println("div by 0: " + e);
            }
            } }




                                                                             51
   48   49   50   51   52   53   54   55   56   57   58