Public int read() throws IOException
Метод doRread() в блоке tryвызывает методread(),который пытается ввести данные из потока System.in в буфер. Если возникает ошибка ввода, управление передается блоку catch, в котором обрабатывается исключение, иначе блок catch пропускается. Если блок try-catch опустить, то компилятор укажет на ошибку.
Второй подход можно продемонстрировать на этом же примере.
Если метод может генерировать исключения, которые сам не обрабатывает, а передает для обработки другим методам, он должен объявить о таком поведении с помощью ключевого слова throws, чтобы вызывающие методы могли защитить себя от этих исключений. В вызывающих методах должна быть предусмотрена обработка этих исключений. Форма объявления такого метода:
тип имя_метода(список аргументов) throws список_исключений { }
При этом сам объявляемый метод может содержать блоки try-catch, а может и не содержать их. Например, метод doRead() можно объявить:
public void doRead() throws IOException{
System.in.read(buffer);
}
Обрабатывать исключение при этом будет метод, вызывающий doRead():
public void myDoRead(){
try {
doRead();
}
catch (IOException e){
String err = e.toString();
System.out.println(err);
}
}
Третий подход будет рассмотрен ниже на примере создания пользовательских исключений.
Метод может обрабатывать несколько исключений.
/* пример # 1 : обработка 2-х типов исключений : TwoException.java */
class TwoException {
public static void main(String[] args) {
try {
int a = (int)(Math.random() * 2);
System.out.println("a = " + a);
int c[] = { 1/a };
c[1] = 1;
}
catch(ArithmeticException e){
System.out.println("деление на 0"+ e);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("превышение границ массива: " + e);
}
System.out.println("после блока try/catch");
}
}
Исключение "деление на 0" возникнет при инициализации элемента массива а = 0. В противном случае (а = 1) генерируется исключение "превышение границ массива" при попытке присвоить значение второму элементу массива с[], который содержит только один элемент.
Дата добавления: 2015-04-05; просмотров: 941;