Похожие презентации:
Исключительные ситуации
1.
Исключительные ситуации2.
Что такое исключениеИсключительная ситуация –
невозможность дальнейшего
нормального течения программы
3.
Причины возникновенияисключительных ситуаций
Внутренняя ошибка виртуальной
машины
(нехватка памяти)
Внутренняя ошибка программы
(деление на 0)
Внешний фактор
(ошибка чтения данных с диска)
4.
Иерархия исключенийThrowable
Error
Exception
RuntimeException
5.
Методы класса Throwablet.getMessage();
t.getCause();
t.printStackTrace();
t.printStackTrace(System.out);
6.
Способы обработки исключений1. try
... catch ... finally
2. throws
7.
«Отказ» от исключенияvoid doit() {
Thread.sleep(2000);
}
8.
«Отказ» от исключенияvoid doit() throws
InterruptedException {
Thread.sleep(2000);
}
9.
«Отказ» от исключенияvoid doit() throws
InterruptedException,
IOException,
ParseException {
...
}
10.
«Отказ» от исключенияvoid doit() throws
FileNotFoundException,
UnsupportedEncodingException,
IOException {
...
}
11.
«Отказ» от исключенияvoid doit() throws
IOException {
...
}
12.
«Отказ» от исключенияvoid doit() throws
IOException {
...
}
// при наследовании метод не
// может добавлять новые
// исключения в раздел throws
13.
«Обработка» исключенияvoid doit() {
Thread.sleep(2000);
}
14.
«Обработка» исключенияvoid doit() {
try {
Thread.sleep(2000);
} catch(InterruptedException e) {
System.err.println(“Error”);
}
}
15.
«Обработка» исключенияtry {
// 1
} catch(InterruptedException e) {
// 2
} catch(IOException e) {
// 3
} catch(ParseException e) {
// 4
}
16.
«Обработка» исключенияtry {
...
} catch(FileNotFoundException e) {
} catch(IOException e) {
} catch(Exception e) {
} catch(Throwable e) {
}
17.
«Обработка» исключенияtry {
...
} catch(Throwable e) {
System.out.println(“Ups”);
}
18.
«Обработка» и «отказ» отисключения
void doit() throws
InterruptedException {
try {
// 1
} catch(IOException e) {
// 2
} catch(ParseException e) {
// 3
}
}
19.
«Обработка» исключенияtry {
// 1
// 2 ОШИБКА
// 3
} catch(ParseException e) {
// 4
}
20.
«Обработка» исключенияtry {
int x = y / z;
x++;
System.out.println(x);
} catch(ArithmeticException e) {
System.out.println(“ERROR”);
}
21.
«Обработка» исключенияint x;
try {
x = y / z;
} catch(ArithmeticException e) {
System.out.println(“ERROR”);
}
x++; // ОШИБКА КОМПИЛЯЦИИ
System.out.println(x);
22.
«Обработка» исключенияint x = 4;
try {
x = y / z;
} catch(ArithmeticException e) {
System.out.println(“ERROR”);
}
x++;
System.out.println(x);
23.
Блок finallytry {
// 1
// 2 – ОШИБКА
// 3
} catch(ArithmeticException e) {
// 4
} finally {
// 5
}
// 6
24.
Блок finallytry {
DataBase x = DataBase.open();
return x.readData();
} catch(DataBaseException e) {
return null;
}
x.close();
25.
Блок finallytry {
DataBase x = DataBase.open();
return x.readData();
} catch(DataBaseException e) {
return null;
} finally {
x.close();
}
26.
Блок finallyDataBase x = null;
try {
x = DataBase.open();
return x.readData();
} catch(DataBaseException e) {
return null;
} finally {
x.close();
}
27.
Вложенные блоки tryDataBase x = null;
try {
x = DataBase.open();
return x.readData();
} catch(DataBaseException e) {
return null;
} finally {
try {
x.close();
} catch(Exception e) {}
}
28.
«Пробрасывание» исключенийDataBase x = null;
try {
x = DataBase.open();
return x.writeData();
} catch(DataBaseException e) {
x.cancel();
throw e;
} finally {
x.close();
}
29.
«Пробрасывание» исключенийData doit() throws DataBaseException {
DataBase x = null;
try {
x = DataBase.open();
return x.writeData();
} catch(DataBaseException e) {
x.cancel();
throw e;
} finally {
x.close();
}
}
30.
«Маскирование» исключенийData doit() throws LogicException {
DataBase x = null;
try {
x = DataBase.open();
return x.writeData();
} catch(DataBaseException e) {
x.cancel();
throw new LogicException(e);
} finally {
x.close();
}
}
31.
Собственные исключенияpublic class IllegalSexException
extends IllegalArgumentException {
private String sex;
}
32.
Собственные исключенияif(“M”.equals(sex)) {
...
} else if(“W”.equals(sex)) {
...
} else {
throw
new IllegalSexException(sex);
}