Saint Petersburg, 2011 Java Lecture #06 Exceptions.

Презентация:



Advertisements
Похожие презентации
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Advertisements

Кафедра ОСУ, Java 2004 Обработка исключений В Java обработка исключительных ситуаций (exception handling) происходит следующим образом: Либо.
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
Исключения в EJB Кряжев Василий
1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Обработка исключительных ситуаций Андрей Дмитриев 2008.
Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений.
Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
Исключительные ситуации. Схема обработки исключений Try { //охраняемый блок trow (new MyException();) } catch(MyExeption e) { … } catch(Exeption e){ …
Java SE: основные понятия Борис Кварцхава
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Программная инженерия Дмитриев Андрей Владиславович
Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Содержание Перечисления Метаданные Другие возможности.
Практическое использование Java Макаревич Л. Г.. Инсталляция Java Документация в docs Прописать PATH (каталог bin в JSDK) Прописать CLASSPATH (путь к.
Транксрипт:

Saint Petersburg, 2011 Java Lecture #06 Exceptions

Введение типы обработка создание best practice 2

Исключительные ситуации Исключение (Exception) – событие, происходящее в процессе выполнения программы, которое нарушает нормальную последовательность операций Применяются для: Информирование о произошедшей ошибке Запрос помощи в непредусмотренной ситуации Типы: Checked exceptions Unchecked / runtime exceptions Errors 3

Иерархия 4 Throwable Error Exception RuntimeException IOException SQLException JAXBException NamingException IOException SQLException JAXBException NamingException VirtualMachineError AssertionError ThreadDeath VirtualMachineError AssertionError ThreadDeath NullPointerException IllegalArgumentException UnsupportedOperationException NullPointerException IllegalArgumentException UnsupportedOperationException

Checked Exceptions Потомки java.lang.Exception Обязательно: обрабатывать объявлять в сигнатуре метода: public void doSomething() throws SomeException сбрасывать это исключение в теле метода: if (isGoodValue) { throw new SomeException(); } обрабатывать при вызове метода или перебрасывать в метод уровнем выше 5

Runtime Exceptions Потомки java.lang.RuntimeException Необязательно: обрабатывать объявлять в сигнатуре метода обрабатывать при вызове метода Сбросить runtime exception можно в любом месте: throw new IllegalArgumentException(argument cannot be null) Обработка нужна, когда можно продолжить работу: String text = "text"; try { System.out.println(text.substring(5)); } catch (StringIndexOutOfBoundsException e) { text = DEFAULT_VALUE; } 6

Errors Потомки java.lang.Error Внешние по отношению к приложению исключительные ситуации, как правило, приложение не может предусмотреть или восстановиться после возникновения таких исключений. Например, приложение успешно открывает файл, но из-за неправильной работы ОС не может его прочитать, в этом случае сбрасывается java.io.IOError Обработка нужна только для информирования пользователя 7

Пример 1. public class Main { 2. public static void main(String[] args) { 3. for (int i = 0; i

Пример 1. public class Main { 2. public static void main(String[] args) { 3. for (int i = 0; i java Main hello world 9

Пример 1. public class Main { 2. public static void main(String[] args) { 3. for (int i = 0; i java Main hello world hello world Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at Main.main(Main.java:4) 10

Обработка исключительных ситуаций: try – catch – finally Для обработки используется блок try-catch-finally : try { aMethodThrowingPossibleException() } catch (PossibleException e) { e.printStackTrace() } finally { // perform final processing } Необработанное исключение поднимается на уровень выше (в вызвавший метод) Если исключение не будет обработано в методе main(), работа виртуальной машины будет завершена Код в блоке finally будет выполнен в любом случае, даже если: исключение произошло исключение не произошло внутри блока catch была использована команда return 11

try – catch – finally Может использоваться без finally, когда нет обязательного к исполнению в любом случае кода Может использоваться без catch, когда не предполагается обработка исключения, но есть обязательный к исполнению код Может содержать несколько catch, расположенных иерархично от более узкого (потомка) к более широкому (родителю) исключению 12

Пример обработки 1. public class Main { 2. public static void main(String... args) { 3. try { 4. for (int i = 0; i java Main hello world hello world Wrong index! 13

Создание и использование Типы наследуются от класса java.lang.Exception или java.lang.RuntimeException public class MyException extends Exception { public MyException() { super(); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(String message) { super(message); } public MyException(Throwable cause) { super(cause); } } class A { void doItImmediately() throws MyException { // do smth if (isTrue) { throw new MyException("Cannot do it immediately! I want go away!"); } } } 14

Best Practice Желательно использовать имеющиеся исключения, в редких случаях создавая собственные: ConnectionFailedException – существует ConnectException OutOfMoneyException – хорошее бизнес-исключение Исключения типа Error лучше не обрабатывать Использовать только там, где это необходимо Checked exceptions – для восстанавливаемых ситуаций, unchecked exceptions – для ошибок программы Избегать ненужного использования checked exceptions (для проверки состояний и т.д.) Документировать все исключения, бросаемые в throws XXXException Добавлять информацию в сообщения 15

References J. Bloch. Effective Java: Programming Language Guide, Chapter 8 – Exceptions B. Eckel. Thinking in Java, Chapter 9 – Error handling with exceptions 16