5.3 Модель try-catch
Блок
'try' состоит из набора выполняемых утверждений, которые могут контролировать исключение. Метод, который может перехватить исключение, может также быть включен в блок try. Блок
'try' может сопровождаться одним или более блоками
'catch'. Дополнительные исключения в блоке перехвачиваются в этих блоках 'catch'.
Обратите внимание: Блок catch должен всегда связываться с блоком try и не может существовать самостоятельно.
Просмотрите блок
try' данный ниже:
. . .
try {
int c= calculate(9,0); // user defined method
System.out.println ;
}
catch (Exception e) { // exception object
System.err.println( Exception occurred: + e.toString());
e.printStackTrace();
}
. . .
int calculate( int a, int b) {
int c=a/b;
return c;
}
В вышеупомянутом отрывке кода, е - экземпляр класса 'Exception'. Заметьте, что в блоке catch, методы
'toString ()' и
'printStackTrace () ' используются, чтобы печатать исключение, которое произошло.
toString () - public метод, определенный в классе Object и унаследован классом Exception. Этот метод используется, чтобы отыскать представление Строки информации, сохраненной в объекте Исключения.
printStackTrace () - метод, определенный в классе Exception и используется, чтобы печатать информацию относительно исключения, то есть, как оно произошло и какой строке кода.
Законченный фрагмент кода приводится в примере 1.
Пример 1:
public class ExceptionDemo {
public static void main(String args[]) {
try {
int с = calculate(9,0); // user defined method
System.out.printIn ;
}
catch(Exception e) { // exception object System.err.println( Exception occurred : + e.toString()); e.printStackTrace();
}
}
static int calculate(int a, int b) { int с = a/b; return с;
}
}
Рисунок 5.2 отображает вывод вышеупомянутого примера.
Рисунок 5.2: Вывод примера 1
Объявление события типа Exception гарантирует, что любой тип исключения может быть перехвачен в ловушку, используя объект е. Поэтому, когда тип отбрасываемого исключения не известен во время проектирования, мы можем использовать класс 'Exception', чтобы перехватить ошибку в ловушку.
В вышеупомянутом коде, любая ошибка, которая происходит в течение выполнения метода, 'calculate () ', перехватывается блоком 'catch ()'. Если ошибка происходит в течение выполнения метода, ' calculate () ', утверждение печати никогда не будет выполняться. Выполнение продолжает непосредственно с блока ' catch '.
Обратите внимание: Блок try не всегда нуждается в сопровождении блока catch.