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