Содержание
- 2. План лекции Возникновение ошибок и подходы к их обработке Исключения и их классификация Объявляемые исключения Отлов
- 3. Э… Проблемы В процессе выполнения программные приложения встречаются с ситуациями, приводящими к возникновению ошибок Ошибки бывают
- 4. Обработка ошибок Обеспечение стабильности и надежности работы программы Дружественное поведение конечного программного продукта Безопасность в процессе
- 5. Подходы к обработке ошибок Возвращение методом кода ошибки Возвращается только код ошибки Используются «свободные» значения возвращаемого
- 6. Механизм обработки Создается и «выбрасывается» объект исключения, содержащий информацию об ошибке Выполнение текущего потока вычислений приостанавливается
- 7. Поиск обработчика исключения main(String[] args) obj1.method1() Class1.staticMethod() obj2.method145() obj67.method35() Exception Class1.staticMethod() найден obj48.method565() Exception не найден
- 8. Классификация исключений Объявляемые (проверяемые, checked) Носят предсказуемый характер Указываются в объявлении метода Наследуют от класса Exception
- 9. Классификация исключений Синхронные Непосредственный итог выполнения определенной инструкции Могут быть объявляемыми и необъявляемыми Асинхронные Не зависят
- 10. Базовые классы исключений
- 11. Объявление исключений Сведения об исключениях метода не менее важны, чем тип возвращаемого им значения Мораль: их
- 12. Особенности объявления исключений В списке должны присутствовать те объявляемые исключения, которые не обрабатываются в теле самого
- 13. Особенности объявления исключений Объявляются все объявляемые исключения, не обработанные в теле метода Статические блоки инициализации и
- 14. Вызов метода со списком исключений Варианты действий Отловить исключения и обработать их Отловить исключения и вместо
- 15. Важное замечание Каждое исключение имеет как формальную причину возникновения, так и фактическую Исключение должно отлавливаться и
- 16. Отлов исключений Особый синтаксис описания обработчиков исключений Конструкция try/catch/finally try { Инструкции } catch (ТипИсключения1 идентификатор1)
- 17. Блок try Заключает в себе блок кода, выполняемый успешно при нормальных обстоятельствах Тело выполняется вплоть до:
- 18. Блок catch «Внутренний метод» с параметром типа исключения, которое им обрабатывается Способен: Выполнить некоторые восстановительные действия
- 19. Блок catch Предложения catch рассматриваются последовательно до обнаружения среди них того, тип которого допускает присвоение выброшенного
- 20. Блок finally Блок finally выполняется в любом случае: При успешном выполнении try При выбрасывании исключения При
- 21. Выбрасывание исключений Объявляемые и необъявляемые исключения, выбрасываемые вызываемыми методами и операторами Явно (принудительно) выбрасываемые исключения throw
- 22. Создание типов исключений Создается новый тип, наследующий от более широкого типа, подходящего по смыслу (например, java.lang.IndexOutOfBoundsException)
- 23. Отладка приложений Собственные средства Добавление дополнительного кода Вывод данных на печать Вывод данных в системные журналы
- 24. Преимущества от использования исключений Единая логика обработки ошибок Обработка ошибок на любом уровне Выделение и обработка
- 25. Наследование © Составление, Гаврилов А.В., Будаев Д.С., 2013 Лекция 3.2 УНЦ «Инфоком» Самара 2013
- 26. План лекции Наследование классов и создание объектов дочерних классов Переопределение методов Сокрытие полей Завершенные и абстрактные
- 27. Наследование в Java Виды наследования Класс Расширяет класс и/или Реализует интерфейс(ы) Интерфейс Расширяет интерфейс(ы)
- 28. Расширение классов Класс может расширить только один класс Расширяющий класс называется производным (дочерним, подклассом) Расширяемый класс
- 29. Конструкторы дочерних классов Вызываются при создании объектов дочерних классов Могут вызывать друг друга по ключевому слову
- 30. Порядок создания объекта Порядок вызова конструкторов: Вызов конструктора базового класса Присваивание исходных значений полям объекта посредством
- 31. Забавный пример class SuperShow { public String str = "SuperStr"; public void show() { System.out.println("Super.show: "
- 32. И его результат public static void main(String[] args) { ExtendShow ext = new ExtendShow(); SuperShow sup
- 33. Совпадение имен методов в родительском и дочернем классах Сигнатуры различны Перегрузка – добавляется метод с другими
- 34. Переопределение методов При обращении извне объекта производного класса к его методу всегда вызывается новая версия метода
- 35. Переопределение методов В предложении throws дочернего метода не может быть типов исключений, несовместимых с типами в
- 36. Сокрытие полей Поля не переопределяются, но скрываются Тип поля при сокрытии можно изменить Поле базового класса
- 37. Служебное слово super Действует как ссылка на текущий экземпляр по контракту базового класса Может быть использовано
- 38. Сокрытие статических членов Статические члены не могут быть переопределены, они скрываются Обычно для доступа используется имя
- 39. Давешний результат public static void main(String[] args) { ExtendShow ext = new ExtendShow(); SuperShow sup =
- 40. Замечание Важно понимать, что: Переопределение методов – фундаментальный механизм ООП, в частности, обеспечивающий полиморфизм Сокрытие полей
- 41. Завершенные методы и классы Завершенный метод не допускает переопределения Завершенный класс не допускает расширения final public
- 42. Абстрактные классы и методы Абстрактные методы описывают сигнатуру без реализации Класс с абстрактными методами обязан быть
- 43. Контракт класса Набор методов и полей класса, открытых для доступа извне тем или иным способом, в
- 44. Наследование Практическое воплощение наследования Наследование контракта или типа, в результате чего производный класс получает тип базового,
- 45. Понятие интерфейса Позволяет описать тип в полностью абстрактной форме Экземпляры интерфейсов создавать нельзя Классы способны реализовывать
- 46. Наследование в Java Виды наследования Класс Расширяет класс Реализует интерфейсы Интерфейс Расширяет интерфейсы
- 47. Объявление интерфейсов Все члены интерфейса по умолчанию обладают признаком public Применение других модификаторов редко имеет смысл
- 48. Константы в интерфейсах Имеют неявные модификаторы public static final Должны быть снабжены инициализаторами interface Verbose {
- 49. Методы в интерфейсах Имеют неявные модификаторы public abstract Не могут иметь модификаторов native synchronized strictfp static
- 50. Расширение интерфейсов интерфейсами Допускается сокрытие констант Переопределение метода не несет семантической нагрузки Совпадение имен наследуемых методов
- 51. Реализация интерфейсов классами Интерфейсы реализуются классами Класс может реализовывать несколько интерфейсов Если класс не реализует все
- 52. Интерфейс или абстрактный класс? Интерфейсы обеспечивают инструментарий множественного наследования, производный класс способен наследовать одновременно несколько интерфейсов
- 53. Интерфейс или абстрактный класс? Абстрактный класс частично может быть реализован, он вправе содержать члены, помеченные как
- 54. Ссылки интерфейсных типов Допускаются ссылки интерфейсных типов Такая ссылка позволяет выполнять над объектом операции, описанные во
- 55. Использование типов Ссылочные типы Неявное приведение Явное приведение MyNewThread mnt = new MyNewThread(); MyThread mt =
- 56. Пустые интерфейсы Существуют пустые интерфейсы, объявления которых не содержат ни констант, ни методов Реализация таких интерфейсов
- 57. Спасибо за внимание!
- 59. Скачать презентацию