Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пацей 4 сем / Лекции / СТПI_2_ООП

.pdf
Скачиваний:
70
Добавлен:
29.04.2018
Размер:
15.18 Mб
Скачать

Иерархия исключений и

ошибок

возникают только во время выполнения

программы

проверяемые исключения

Проверяемые - должны быть обработаны в методе, который может их генерировать, или включены в throws-список метода для дальнейшей обработки в вызывающих методах

непроверяемые исключения

Системные

проверяемые

Классы непроверяемых исключений от RuntimeException

ArithmeticException

ArrayIndexOutOfBoundsException

ArrayStoreException

ClassCastException

ConcurrentModificationException

IllegalArgumentException

IllegalMonitorStateException

IllegalStateException

IllegalThreadStateException

IndexOutOfBoundsException

NegativeArraySizeException

NullPointerException

NumberFormatException

StringIndexOutOfBoundsException

UnsupportedOperationException

Способы обработки исключений

1) перехват и обработка исключения в блоке try-catch метода

2) объявление исключения в секции throws метода и передача вызывающему

методу

Ключевое слово throws позволяет разобраться

с исключениями методов «чужих» классов, код которых отсутствует.

public boolean add (Air item) throws LogicalException { boolean flag = false;

if( item != null) {

контролируется

airlist.add(item);

компилятором

flag = true;

 

}

else {

throw new LogicalException("Null pointer");

}

return flag;}

3)использование собственных исключений

Обработка нескольких исключений

catch(IllegalArgumentException e) { } catch(PatternSyntaxException e) { }

/* никогда не может быть вызван: ошибка компиляци

идентичная обработка

try {

//

} catch(NumberFormatException |

ClassNotFoundException |

InstantiationException e) { e.printStackTrace();

}

1)Исключения – ресурсоемкие (если можно обойтись)

2)Можно создавать проверяемое исключение

public class LogicalException extends Exception{

private static final Logger LOG = Logger.getLogger(LogicalException.c

public LogicalException() { super(); }

public LogicalException(String message, Throwable cause) { super(message, cause);

LOG.error(message,cause);

}

public LogicalException(String message) {

super(message);

LOG.error(message);

}

}

finally

try {

}catch(OneClassException e) {// необязателен

}catch(TwoClassException e) {// необязателен

}finally { /* выполняется или после try,

или после catch */ } System.out.println(now);

негенерировать исключения в инструкции finally

Наследование и исключения

переопределяемый метод в подклассе не может содержать в инструкции throws исключений, не обрабатываемых в соответствующем методе суперкласса;

конструктор подкласса должен включить в свой блок throws все классы исключений или их суперклассы из блока throws конструктора суперкласса, к которому он обращается при создании объекта.

class Resource {

public Resource(String filename) throws FileNotFoundException

{

} }

class ConcreteResource extends Resource {

public ConcreteResource(String name) throws FileNotFoundException super(name);

}

}

Соседние файлы в папке Лекции