Page 51 - 4657
P. 51
static void subroutine() {
int d = 0;
int a = 10 / d;
}
public static void main(String args[]) {
Exc1.subroutine();
} }
Висновок цієї програми показує, як оброблювач виключень
системи Java виводить вміст усього стека викликів.
С:\> java Exc1
java.lang.ArithmeticException: / by zero
at Exc1.subroutine(Exc1.java:4)
at Exc1.main(Exc1.java:7)
try і catch
Для завдання блоку програмного коду, що потрібно
захистити від виключень, використовується ключове слово try.
Відразу ж після try-блоку міститься блок catch, що задає тип
виключення, яке ви хочете обробляти.
class Exc2 {
public static void main(String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println("division by zero");
}
} }
Метою більшості добре сконструйованих catch-розділів
повинна бути обробка виниклої виняткової ситуації і
приведення змінні програми в деякий розумний стан - таке, щоб
програму можна було продовжити так, начебто ніякої помилки і
не було (у нашому прикладі виводиться попередження – division
by zero).
49