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

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

.pdf
Скачиваний:
74
Добавлен:
29.04.2018
Размер:
15 Мб
Скачать
☆

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

ошибок

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

программы

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

Проверяемые - должны быть обработаны в методе, который может их генерировать, или включены в 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);

}

}

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