SlideShare una empresa de Scribd logo
1 de 22
Язык программирования
JAVA
Лекция# 3 (Часть 2)
Обработка исключений в Java
Моисеенко Антон
canggu@mail.ru
СПГУАП
Кафедра Информационно-Сетевых Технологий
Содержание курса
■ Введение
■ Исключения и ошибки
■ Проверяемые и непроверяемые исключения
■ Блок try-catch-finally
■ Оператор throw
■ Зарезервированное слово throws
■ Некоторые типы исключений
Введение
class SimpleMistake {
public static void main(String args[]) {
System.out.println(1/0);
}
}
Что такое Исключение?
• Исключение в Java — это объект, который описывает
исключительное состояние, возникшее в каком-либо
участке программного кода
• Когда возникает исключительное состояние, создается
объект класса Exception
• Этот объект пересылается в
метод, обрабатывающий данный
тип исключительной ситуации
• По «следам» стека программы
можно найти данный метод – и
причину ошибки
Схема возникновения и
обработки исключений
Метод, в котором
возникла
ошибка
Метод, не обрабаты-
вающий
исключение
Метод, обрабаты-
вающий
исключение
mai
n
Метод, в котором
возникла
ошибка
Метод, не обрабаты-
вающий
исключение
Метод, обрабаты-
вающий
исключение
mai
n
Вызов
метод
а
Вызов
метод
а
Вызов
метод
а
Передает дальше
Обрабатывает
исключение
Что исключение поможет
найти?
■ Тип исключения указывает на причину его возникновения
■ Стек вызовов позволяет отследить путь, по которому был
достигнут проблемный код
■ Стандартный обработчик выдает номер строки кода, в
котором произошло исключение
■ В разработке можно использовать средства
○ отладка (debug)
○ точка остановка выполнения программы (breakpoint)
Возникновение исключения
Совершаем преднамеренную ошибку – делим на ноль
class SimpleMistake {
public static void main(String args[]) {
int d = 0;
int a = 42 / d;
}
}
Result:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ru.guap.SimpleMistake.main(SimpleMistake.java:11)
Обработка исключения
Ловим свою ошибку и выводим информацию на консоль
class SimpleMistake{
public static void main(String args[]){
try{
int d = 0; //выполнится
int a = 42 / d;
int z = a + d; //не выполнится
}
catch (ArithmeticException e) {
System.out.println(«Деление на ноль");
}
}
}
Как действует связка try-catch
try{
doSomethingDangerous(); //опасный метод
}
catch (CatchedExceptionType e) {
treatDanger(); //обработка исключения
}
//CatchedExceptionType – класс, к которому
принадлежит исключение e
try { } catch (...)
{
}
Виды исключений
■ Проверяемое
○ FileNotFoundException, IOException, …
○ После такой ситуации зачастую требуется
восстановление состояния программы
○ Обязательны для описания при определении метода
■ Ошибка
○ Класс java.lang.Error и его наследники
■ Исключение времени исполнения
○ Оно же непроверяемое
○ RuntimeException и все наследники
○ Восстановление после таких ситуаций обычно не
производится
Примеры исключений
ArithmeticException Ошибка при вычислениях –
например, деление на 0.
ArrayIndexOutOfBoundsException Выход за пределы массива.
FileNotFoundException Если не обнаружен
запрошенный файл.
IOException Любое исключение в системе
ввода/вывода; включает
предыдущее.
OutOfMemoryError Реакция на нехватку памяти.
VirtualMachineError Ошибка внутри вируальной
машины Java.
AWTError Ошибка при работе
графического интерфейса.
Иерархия Throwable объектов
Exception
Throwable
IOException
Serializable
Error
Assertion
Error
OutOfMemory
Error
VirtualMachine
Error
Runtime
Exception
Arithmetic
Exception
SQLException
IndexOutOf
BoundsException
Требования к коду
• Если метод вызывает проверяемое
исключение, то он должен
> либо обработать его
> либо передать исключение выше по стеку
вызова
• Неудовлетворяющий
этому правилу код
не компилируется
Каскад обработчиков
Иногда одного обработчика недостаточно – создаем
несколько, на разные типы исключений
class MultiCatch {
public static void main(String args[]) {
try {
riskyMethod();
}
catch (ArithmeticException e) {
tryToHandleArithmetic();
}
catch(ArrayIndexOutOfBoundsException e) {
tryToHandleIndex();
}
}
}
Вложенные блоки (cont.)
Этот метод сам обрабатывает свое же исключение, поэтому
наружу исключение не передается
public static void doCalculation(){
try {
riskyCode();
} catch(ArrayIndexOutOfBoundsException e) {
tryToHandle();
}
}
Явно брошенное исключение
■ Новое исключение создается посредством вызова конструктора
■ Конструктор принимает строку, описывающую причину исключения
■ Генерирование исключения происходит с помощью оператора throw
class ThrowDemo {
void riskyMethod(int value) {
try {
//какие-то действия
if (value == 1){
//бросаем исключение
throw new IllegalArgumentException(“Can’t be 1");
}
}
catch (IllegalArgumentException e) {
prepareToClose();
//передача исключения выше
throw e;
}
}
Описание исключений
После имени метода указывается тип (типы) возможных исключений,
которые метод может сгенерировать: throws
class ThrowsDemo {
static void riskyMethod() throws
IllegalAccessException {
//do something
if (condition){
throw new
IllegalAccessException("fake");
}
}
public static void main(String args[]){
riskyMethod();
}
}
Блок finally
Используя данный блок, добиваемся того, что некий набор действий
выполнится независимо от того, сгенерировано исключение или нет
try {
//какие-то действия
doSomething();
//иногда бросает исключение
doSomethingRisky();
}catch (NumberFormatException e) {
handleState(); //обрабатываем исключение
} finally {
//действия, которые нужно выполнить независимо
// от того, были ли сгенерировано исключение или нет
doFinalStuff();
}
Пользовательские классы-исключения
Создаем свой класс исключений на основе класса Exception
class TooHeavyBirdException extends Exception {
private int weight;
private String message;
TooHeavyBirdException (int weight, String
message) {
this. weight = weight;
this. message = message;
}
}
Пользовательские классы-исключения
try {//какие-то действия
if (condition){//бросаем наше исключение
throw new TooHeavyBirdException (10, “Веревка не
выдержала птицу");
} //другие действия
}catch (TooHeavyBirdException e) {
showModalDialog(e.getMessage());
}
■ Используется обычным
способом.
■ Зачастую создавать свои
исключения не требуется.
Вредные советы
■ Закрыть все опасные участки пустыми обработчиками
(catch(...){ })
■ Использовать везде catch(Exception e){...} и throws
Exception
■ …
Вопросы?

Más contenido relacionado

La actualidad más candente

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.Igor Shkulipa
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.Igor Shkulipa
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4Technopark
 
Java core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.pptJava core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.pptAnton Moiseenko
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.Unguryan Vitaliy
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.Igor Shkulipa
 

La actualidad más candente (12)

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
Java core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.pptJava core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.ppt
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
 
java
javajava
java
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.
 

Destacado

Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debuggingcolriot
 
Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.Anton Moiseenko
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAlex Tumanoff
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 

Destacado (8)

ABOUT PACKAGES
ABOUT PACKAGESABOUT PACKAGES
ABOUT PACKAGES
 
Exceptions
ExceptionsExceptions
Exceptions
 
Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debugging
 
Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 

Similar a Java Core. Lecture# 3. Part# 2. Exceptions.

обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
4. java lecture exceptions
4. java lecture exceptions4. java lecture exceptions
4. java lecture exceptionsMERA_school
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Dima Dzuba
 
Msu.Center.Lectures.J05 Handling Exceptions
Msu.Center.Lectures.J05 Handling ExceptionsMsu.Center.Lectures.J05 Handling Exceptions
Msu.Center.Lectures.J05 Handling Exceptionsolegol
 
05 Обработка Исключений
05 Обработка Исключений05 Обработка Исключений
05 Обработка Исключенийphearnot
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибкиUnguryan Vitaliy
 
Исключительные ситуации
Исключительные ситуацииИсключительные ситуации
Исключительные ситуацииAlexey Bovanenko
 
Обработка исключений
Обработка исключенийОбработка исключений
Обработка исключенийZhaslan Doschanov
 
C++ осень 2012 лекция 3
C++ осень 2012 лекция 3C++ осень 2012 лекция 3
C++ осень 2012 лекция 3Technopark
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Yulia Tsisyk
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.Igor Shkulipa
 
Обработка ошибок и исключений
Обработка ошибок и исключенийОбработка ошибок и исключений
Обработка ошибок и исключенийitclub_kz
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05Computer Science Club
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
ук 03.001.02 2011
ук 03.001.02 2011ук 03.001.02 2011
ук 03.001.02 2011etyumentcev
 
модуль 05 обработка исключений
модуль 05 обработка исключениймодуль 05 обработка исключений
модуль 05 обработка исключенийYevgeniy Gertsen
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Roman Brovko
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис РечкуновJSib
 

Similar a Java Core. Lecture# 3. Part# 2. Exceptions. (20)

обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
4. java lecture exceptions
4. java lecture exceptions4. java lecture exceptions
4. java lecture exceptions
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 
Msu.Center.Lectures.J05 Handling Exceptions
Msu.Center.Lectures.J05 Handling ExceptionsMsu.Center.Lectures.J05 Handling Exceptions
Msu.Center.Lectures.J05 Handling Exceptions
 
05 Обработка Исключений
05 Обработка Исключений05 Обработка Исключений
05 Обработка Исключений
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
 
Исключительные ситуации
Исключительные ситуацииИсключительные ситуации
Исключительные ситуации
 
Обработка исключений
Обработка исключенийОбработка исключений
Обработка исключений
 
C++ осень 2012 лекция 3
C++ осень 2012 лекция 3C++ осень 2012 лекция 3
C++ осень 2012 лекция 3
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"
 
Обработка ошибок
Обработка ошибокОбработка ошибок
Обработка ошибок
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.
 
Обработка ошибок и исключений
Обработка ошибок и исключенийОбработка ошибок и исключений
Обработка ошибок и исключений
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
ук 03.001.02 2011
ук 03.001.02 2011ук 03.001.02 2011
ук 03.001.02 2011
 
модуль 05 обработка исключений
модуль 05 обработка исключениймодуль 05 обработка исключений
модуль 05 обработка исключений
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
 
WTF Code @ jug.lv
WTF Code @ jug.lvWTF Code @ jug.lv
WTF Code @ jug.lv
 

Java Core. Lecture# 3. Part# 2. Exceptions.

  • 1. Язык программирования JAVA Лекция# 3 (Часть 2) Обработка исключений в Java Моисеенко Антон canggu@mail.ru СПГУАП Кафедра Информационно-Сетевых Технологий
  • 2. Содержание курса ■ Введение ■ Исключения и ошибки ■ Проверяемые и непроверяемые исключения ■ Блок try-catch-finally ■ Оператор throw ■ Зарезервированное слово throws ■ Некоторые типы исключений
  • 3. Введение class SimpleMistake { public static void main(String args[]) { System.out.println(1/0); } }
  • 4. Что такое Исключение? • Исключение в Java — это объект, который описывает исключительное состояние, возникшее в каком-либо участке программного кода • Когда возникает исключительное состояние, создается объект класса Exception • Этот объект пересылается в метод, обрабатывающий данный тип исключительной ситуации • По «следам» стека программы можно найти данный метод – и причину ошибки
  • 5. Схема возникновения и обработки исключений Метод, в котором возникла ошибка Метод, не обрабаты- вающий исключение Метод, обрабаты- вающий исключение mai n Метод, в котором возникла ошибка Метод, не обрабаты- вающий исключение Метод, обрабаты- вающий исключение mai n Вызов метод а Вызов метод а Вызов метод а Передает дальше Обрабатывает исключение
  • 6. Что исключение поможет найти? ■ Тип исключения указывает на причину его возникновения ■ Стек вызовов позволяет отследить путь, по которому был достигнут проблемный код ■ Стандартный обработчик выдает номер строки кода, в котором произошло исключение ■ В разработке можно использовать средства ○ отладка (debug) ○ точка остановка выполнения программы (breakpoint)
  • 7. Возникновение исключения Совершаем преднамеренную ошибку – делим на ноль class SimpleMistake { public static void main(String args[]) { int d = 0; int a = 42 / d; } } Result: Exception in thread "main" java.lang.ArithmeticException: / by zero at ru.guap.SimpleMistake.main(SimpleMistake.java:11)
  • 8. Обработка исключения Ловим свою ошибку и выводим информацию на консоль class SimpleMistake{ public static void main(String args[]){ try{ int d = 0; //выполнится int a = 42 / d; int z = a + d; //не выполнится } catch (ArithmeticException e) { System.out.println(«Деление на ноль"); } } }
  • 9. Как действует связка try-catch try{ doSomethingDangerous(); //опасный метод } catch (CatchedExceptionType e) { treatDanger(); //обработка исключения } //CatchedExceptionType – класс, к которому принадлежит исключение e try { } catch (...) { }
  • 10. Виды исключений ■ Проверяемое ○ FileNotFoundException, IOException, … ○ После такой ситуации зачастую требуется восстановление состояния программы ○ Обязательны для описания при определении метода ■ Ошибка ○ Класс java.lang.Error и его наследники ■ Исключение времени исполнения ○ Оно же непроверяемое ○ RuntimeException и все наследники ○ Восстановление после таких ситуаций обычно не производится
  • 11. Примеры исключений ArithmeticException Ошибка при вычислениях – например, деление на 0. ArrayIndexOutOfBoundsException Выход за пределы массива. FileNotFoundException Если не обнаружен запрошенный файл. IOException Любое исключение в системе ввода/вывода; включает предыдущее. OutOfMemoryError Реакция на нехватку памяти. VirtualMachineError Ошибка внутри вируальной машины Java. AWTError Ошибка при работе графического интерфейса.
  • 13. Требования к коду • Если метод вызывает проверяемое исключение, то он должен > либо обработать его > либо передать исключение выше по стеку вызова • Неудовлетворяющий этому правилу код не компилируется
  • 14. Каскад обработчиков Иногда одного обработчика недостаточно – создаем несколько, на разные типы исключений class MultiCatch { public static void main(String args[]) { try { riskyMethod(); } catch (ArithmeticException e) { tryToHandleArithmetic(); } catch(ArrayIndexOutOfBoundsException e) { tryToHandleIndex(); } } }
  • 15. Вложенные блоки (cont.) Этот метод сам обрабатывает свое же исключение, поэтому наружу исключение не передается public static void doCalculation(){ try { riskyCode(); } catch(ArrayIndexOutOfBoundsException e) { tryToHandle(); } }
  • 16. Явно брошенное исключение ■ Новое исключение создается посредством вызова конструктора ■ Конструктор принимает строку, описывающую причину исключения ■ Генерирование исключения происходит с помощью оператора throw class ThrowDemo { void riskyMethod(int value) { try { //какие-то действия if (value == 1){ //бросаем исключение throw new IllegalArgumentException(“Can’t be 1"); } } catch (IllegalArgumentException e) { prepareToClose(); //передача исключения выше throw e; } }
  • 17. Описание исключений После имени метода указывается тип (типы) возможных исключений, которые метод может сгенерировать: throws class ThrowsDemo { static void riskyMethod() throws IllegalAccessException { //do something if (condition){ throw new IllegalAccessException("fake"); } } public static void main(String args[]){ riskyMethod(); } }
  • 18. Блок finally Используя данный блок, добиваемся того, что некий набор действий выполнится независимо от того, сгенерировано исключение или нет try { //какие-то действия doSomething(); //иногда бросает исключение doSomethingRisky(); }catch (NumberFormatException e) { handleState(); //обрабатываем исключение } finally { //действия, которые нужно выполнить независимо // от того, были ли сгенерировано исключение или нет doFinalStuff(); }
  • 19. Пользовательские классы-исключения Создаем свой класс исключений на основе класса Exception class TooHeavyBirdException extends Exception { private int weight; private String message; TooHeavyBirdException (int weight, String message) { this. weight = weight; this. message = message; } }
  • 20. Пользовательские классы-исключения try {//какие-то действия if (condition){//бросаем наше исключение throw new TooHeavyBirdException (10, “Веревка не выдержала птицу"); } //другие действия }catch (TooHeavyBirdException e) { showModalDialog(e.getMessage()); } ■ Используется обычным способом. ■ Зачастую создавать свои исключения не требуется.
  • 21. Вредные советы ■ Закрыть все опасные участки пустыми обработчиками (catch(...){ }) ■ Использовать везде catch(Exception e){...} и throws Exception ■ …