Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Исключения. Java

Содержание

ВнешниеНеверные данные (от пользователя или другого агента) Некритичные сбои оборудования и соединенийВнутренниеВыполнение кода с ошибкамиНарушение ограничений средыКритичныеОшибки работы JVMКритичные сбои оборудования и нехватка ресурсовИсточникиошибок© 2010 NetCracker Technology Corp. Confidential.10/25/20112Критичные:• Ошибки работы JVM• Критичные сбои оборудования и
© 2010 NetCracker Technology Corp. Confidential.10/25/2011Лекция 7. Исключения ВнешниеНеверные данные (от пользователя или другого агента) Некритичные сбои оборудования и соединенийВнутренниеВыполнение int errNum = firstMethod();if (errNum == ERR_SIGN1) {// обработка 1-ой ошибки}else if Обработка исключительных ситуаций(try-catch-finally)try {// Код, который может выбрасывать}catch(SpecificException1 e) {// обработка специфической Использование оператора throwПример генерации искусственного исключенияпрограммистом:самим....publicifint calculate(int theValue) throws Exception {(theValue < Использование оператора throwПередача исключительной ситуации на болеевысокий уровень иерархииобработкой:с промежуточнойtry {:}catch (IOException Throwable Throwable(String,Throwable) getMessage() printStackTrace() fillInStackTrace()ExceptionErrorRuntimeExceptionIOExceptionArithmeticExceptionSQLExceptionStackOverflowExceptionOutOfMemoryExceptionТипы исключенийПроверяемые(checked)Непроверяемые(unchecked)Ошибки(фатальные)© 2010 NetCracker Technology Corp. Confidential.10/25/20117OutOfMemoryExceptionStackOverflowExceptionRuntimeExceptionArithmeticExceptionErrorExceptionIOExceptionSQLExceptionThrowable• Throwable(String,Throwable)• getMessage()• printStackTrace()• fillInStackTrace() Создание своих классов исключенийДопускается создание собственных классов исключений.Для этого достаточно создать свой Переопределение исключенийПри переопределении методов следует помнить, что еслипереопределяемый метод объявляет список возможных Вы решаете сигнализировать об ошибке выбросом исключенияМетод который вы вызываете требует от 1 Мы знаем что делать в случае ошибки2 Не знаем что делать 3 Не знаем что делать но исключение не соответствует уровню абстракции методаПример 4 Исключения может избежать вызывающая сторонаПример 4/*******Evaluates maximum element of array.@param elements © 2010 NetCracker Technology Corp. Confidential.10/25/201114Thank you!
Слайды презентации

Слайд 2
Внешние
Неверные данные (от пользователя или другого агента) Некритичные

ВнешниеНеверные данные (от пользователя или другого агента) Некритичные сбои оборудования и

сбои оборудования и соединений

Внутренние
Выполнение кода с ошибками
Нарушение ограничений среды

Критичные
Ошибки

работы JVM
Критичные сбои оборудования и нехватка ресурсов

Источники

ошибок

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

2


Критичные:
• Ошибки работы JVM
• Критичные сбои оборудования и нехватка ресурсов


Внутренние:
• Выполнение кода с ошибками
• Нарушение ограничений среды


Внешние:
• Неверные данные (от пользователя или другого агента)
• Некритичные сбои оборудования и соединений


Слайд 3
int errNum = firstMethod();
if (errNum == ERR_SIGN1) {
//

int errNum = firstMethod();if (errNum == ERR_SIGN1) {// обработка 1-ой ошибки}else

обработка 1-ой ошибки
}
else if (errNum == ERR_SIGN2) {
// обработка

2-ой ошибки
}
else
secondMethod();


try {
firstMethod();
secondMethod();
}
catch(Exception1 e1) {
// обработка 1-ой ошибки
}
catch(Exception2 e2) {
// обработка 2-ой ошибки
}

Методы обработки ошибок

Возвращение

кода

ошибки

Встроенный

механизм проверки

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

3


int errNum = firstMethod();
if (errNum == ERR_SIGN1) {
// обработка 1-ой ошибки
}
else if (errNum == ERR_SIGN2) {
// обработка 2-ой ошибки
}
else
secondMethod();


try {
firstMethod();
secondMethod();
}
catch(Exception1 e1) {
// обработка 1-ой ошибки
}
catch(Exception2 e2) {
// обработка 2-ой ошибки
}


Слайд 4 Обработка исключительных ситуаций
(try-catch-finally)
try {
// Код, который может выбрасывать
}
catch(SpecificException1

Обработка исключительных ситуаций(try-catch-finally)try {// Код, который может выбрасывать}catch(SpecificException1 e) {// обработка

e) {
// обработка специфической ошибки
}
catch(SpecificException2 e) {
// обработка другой

специфической
}
catch(WiderException e) {

исключения

ошибки

// обработка более широкого класса ошибок

}
catch(Exception e) {
// и если исключение не подошло под шаблоны
}
finally {
// выполнится в любом случае
}

выше

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

4


Слайд 5 Использование оператора throw
Пример генерации искусственного исключения
программистом:
самим
....
public
if
int calculate(int theValue)

Использование оператора throwПример генерации искусственного исключенияпрограммистом:самим....publicifint calculate(int theValue) throws Exception {(theValue

throws Exception {
(theValue < 0) {
throw new Exception(
"Параметр
для
вычисления
не
должен
быть
отрицательным"
);
}
}
© 2010

NetCracker Technology Corp. Confidential.

10/25/2011

5


Слайд 6 Использование оператора throw
Передача исключительной ситуации на более
высокий уровень

Использование оператора throwПередача исключительной ситуации на болеевысокий уровень иерархииобработкой:с промежуточнойtry {:}catch

иерархии
обработкой:
с промежуточной
try {
:
}
catch (IOException ex) {
:
// Обработка
:
// Повторное
throw ex;
исключительной
ситуации
возбуждение

исключительной

ситуации

}

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

6


Слайд 7 Throwable Throwable(String,Throwable) getMessage() printStackTrace() fillInStackTrace()

Exception

Error

RuntimeException

IOException

ArithmeticException

SQLException

StackOverflowException

OutOfMemoryException
Типы исключений
Проверяемые
(checked)
Непроверяемые
(unchecked)
Ошибки
(фатальные)
© 2010 NetCracker

Throwable Throwable(String,Throwable) getMessage() printStackTrace() fillInStackTrace()ExceptionErrorRuntimeExceptionIOExceptionArithmeticExceptionSQLExceptionStackOverflowExceptionOutOfMemoryExceptionТипы исключенийПроверяемые(checked)Непроверяемые(unchecked)Ошибки(фатальные)© 2010 NetCracker Technology Corp. Confidential.10/25/20117OutOfMemoryExceptionStackOverflowExceptionRuntimeExceptionArithmeticExceptionErrorExceptionIOExceptionSQLExceptionThrowable• Throwable(String,Throwable)• getMessage()• printStackTrace()• fillInStackTrace()

Technology Corp. Confidential.
10/25/2011
7

OutOfMemoryException

StackOverflowException

RuntimeException

ArithmeticException

Error

Exception

IOException

SQLException
Throwable
• Throwable(String,Throwable)
• getMessage()
• printStackTrace()
• fillInStackTrace()


Слайд 8 Создание своих классов исключений
Допускается создание собственных классов исключений.
Для

Создание своих классов исключенийДопускается создание собственных классов исключений.Для этого достаточно создать

этого достаточно создать свой класс, унаследовав его от любого
наследника

java.lang.Throwable (или от самого Throwable):

public class UserException extends Exception

{

public UserException() {
super();
}

public UserException(String descry) {
super(descry);
}

public UserException(Throwable cause) {
super(cause);
}

public UserException(String descry, Throwable
super(descry, cause);
}

cause) {

}

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

8


Слайд 9 Переопределение исключений
При переопределении методов следует помнить, что если
переопределяемый

Переопределение исключенийПри переопределении методов следует помнить, что еслипереопределяемый метод объявляет список

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

расширять этот список,
но может его сужать.

public class BaseClass {
public void method () throws IOException {
...
}
}
public class IllegalOne extends BaseClass {
public void method () throws IOException,
...
}
}

IllegalAccessException

{

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

9


Слайд 10
Вы решаете сигнализировать об ошибке выбросом исключения

Метод который

Вы решаете сигнализировать об ошибке выбросом исключенияМетод который вы вызываете требует

вы вызываете требует от вас обработать проверяемое исключение
Выбрасываем непроверяемое

исключение

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


Вы знаете что делать в случае ошибки?

Не обрабатываем
(объявляем в throws)

Ловим и оборачиваем в другое


Может ли вызывающая сторона избежать ошибки?

иск
Согласуется ли исключение с логикой и абстракцией
метода?

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

Общая схема работы

с

исключениями

Вы решаете сигнализировать об
ошибке выбросом исключения

Метод, который вы вызываете, требует от вас
обработать проверяемое исключение

нет

знаем

Вы знаете, что
делать в случае
ошибки?

Может ли
вызывающая сторона избежать ошибки?

1

может

не может

Согласуется ли
исключение с логикой и абстракцией метода?

4

3

нет

да

2

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

10


Не обрабатываем
(объявляем в throws)

Ловим и оборачиваем в другое

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

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

Обработать лючение


Слайд 11
1 Мы знаем что делать в случае ошибки

2

1 Мы знаем что делать в случае ошибки2 Не знаем что

Не знаем что делать но исключение соответствует логике метода
Примеры

1-2

int

readInt(String filename, int defaultValue) {
try {
return readIntFrom(filename); // throws IOException
}
catch (IOException e) {
return defaultValue;
}

}

void sendMessage(String host, int port, String message) throws
Connection connection = new Connection(host, port);
try {
connection.send(message); // throws NetworkException
}
finally {
connection.close();
}
}

NetworkException

{

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

11

2. Не знаем что делать, но исключение соответствует логике метода.

1. Мы знаем что делать в случае ошибки.


Слайд 12
3 Не знаем что делать но исключение не

3 Не знаем что делать но исключение не соответствует уровню абстракции

соответствует уровню абстракции метода
Пример 3
Record readRecord(String source) throws StorageException

{
try {
XmlReader xml = openXml(source);
try {

return xml.readRecord(); //

throws

XmlException

}
finally {
xml.close();
}

}
catch (XmlException e) {
throw new StorageException(e);
}

}

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

12

3. Не знаем что делать, но исключение не соответствует уровню абстракции метода.


Слайд 13
4 Исключения может избежать вызывающая сторона
Пример 4
/**
*
*
*
*
*
Evaluates maximum

element of array.
@param elements must not be null and

must contain at

least

one element

@return
@throws
@thorws

maximum element of given array
ArithmeticException if given array is empty

NullPointerException if elements is

null

*/
double maximum(double[] elements) {
if (elements.length == 0)
throw new ArithmeticException("maximum
double max = elements[0];
for (double current : elements)
if (current > max)
max = current;
return max;
}

of

empty

array

doesn't

make

sense");

© 2010 NetCracker Technology Corp. Confidential.

10/25/2011

13

4. Исключения может избежать вызывающая сторона.


  • Имя файла: isklyucheniya-java.pptx
  • Количество просмотров: 129
  • Количество скачиваний: 0