
- •1. Історія створення Java.
- •2. Історія розвитку Java
- •3.Опишіть поняття “об’єкт”
- •4. Опишіть поняття “клас”
- •5. Опишіть типи відношень між класами
- •6. Переваги і недоліки об’єкто-зорієнтованого програмування
- •7. Опишіть правила побудови ідентифікаторів мови Java, наведіть приклади
- •8. Поняття літералів. Приклади
- •9. Оператори та операції в мові Java
- •11. Типи даних у мові Java
- •12. Клас Object
- •13. Клас String
- •14. Клас Class
- •15. Імена в Java
- •16. Пакети в Java
- •17. Область видимості імен
- •18.Об’ява класів у Java
- •19.Приведення типів у Java
- •21.Приведення посилальних типів даних.
- •22.Приведення до рядка.
- •23.Заборонені приведення.
- •24.Застосування приведення типів.
- •25.Статичні елементи.
- •26. Ключові слова this і super.
- •27. Ключове слово abstract.
- •28. Поняття інтерфейсів.
- •29. Поліморфізм.
- •30. Масиви в Java.
- •31. Приведення типів для масивів.
- •32. Клонування масивів.
- •33. Керування ходом виконання програми.
- •34. Нормальне і перерване виконання операторів.
- •35. Блоки і локальні змінні.
- •36. Порожній оператор.
- •38. Синтаксис оператора if.
- •39. Синтаксис оператора switch.
- •40. Керування циклами.
- •41.Синтаксис оператора while
- •42.Ситаксис оператора do
- •43.Синтаксис оператора for
- •44.Оператори break I continue
- •45.Іменовані блоки
- •46. Оператор return
- •47. Оператор synchronized
- •48. Помилки при роботі програми. Виняткові ситуації
- •48. Помилки при роботі програми. Виняткові ситуації
- •49.Причини виникнення помилок
- •50.Обробки виняткових ситуацій
- •51.Конструкція try-catch-finally
- •52.Використання оператора throw
- •53.Виняткові ситуації, які перевіряються і які не перевіряються
- •54.Створення класів користувача обробки виняткових ситуацій
- •55.Поняття потокв в Java
- •56.Базові класи для роботи з потоками
- •57.Класс Thread
- •58. Інтерфейс Runnable
- •60. Потоки-демони
- •61.Синхронізація роботи потоків.
- •62.Класи обгортки для примітивних типів.
- •63.Клас Math.
- •66.Клас Calendar.
- •67.Клас TimeZone.
- •68. Колекції java
- •69.Інтерфейс Collection.
- •70.Інтерфейс Set.
- •71.Інтерфейс List.
- •72.Інтерфейс Map.
- •73.Інтерфейс SortedSet.
- •74.Інтерфейс SortedMap.
- •75.Інтерфейс Iterator.
- •76.Конкретні класи колекцій.
- •77.Клас Properties.
- •78. Інтерфейс Comparator.
- •79.Клас BitSet.
- •80.Клас Random.
- •81.Система введення/виведення. Потоки даних.
- •82.Класи реалізації потоків даних.
- •84. Робота із файловою системою.
- •59. Робота із пріоритетами потоків
48. Помилки при роботі програми. Виняткові ситуації
При виконанні програми найчастіше можуть виникати помилки. В одних випадках це викликано
помилками програміста , в інших зовнішніми причинами. Наприклад , може виникнути
помилка введення / виводу при роботі з файлом або мережевим з'єднанням. У класичних
мовах програмування , наприклад в С , було потрібно перевіряти якесь умова яке
вказувало на наявність помилки і, залежно від цього робити певні
дії .
наприклад
...
int statusCode = someAction ();
if ( statusCode ) {
... Обробка помилки
} else {
Стор. 23 з 51
Програмування на Java
Rendered by www.RenderX.com statusCode = anotherAction ();
if ( statusCode ) {
... Обробка помилки ...
}
}
...
У Java з'явилося більш просте і елегантне рішення - обробка виняткових
ситуацій .
try {
someAction ();
anotherAction ( )
} catch ( Exception e ) {
... Обробка виняткової ситуації
}
Легко помітити , що такий підхід є не тільки елегантним , але і більш надійним
і простим для розуміння.
49.Причини виникнення помилок
Існує три причини виникнення виняткових ситуацій .
• Спроба виконати некоректне вираженіе.Напрімер , розподіл на нуль , або звернення до об'єкта за посиланням , рівний null , спроба використовувати клас , опис якого ( class -файл) відсутня, і т.д.В таких випадках завжди можна точно вказати, в якому місці сталася помилка - саме в некоректному вираженні.
• Виконання оператора throw.Очевідно , що і тут можна легко вказати місце виникнення виняткової ситуації .
• Асинхронні помилки під час виконання программи.Прічіной таких помилок можуть бути збої всередині самої віртуальної машини (адже онатакже є програмою ) , або виклик методу stop ( ) біля потоку виконання thread ) . У цьому випадку неможливо вказати точне місце програми , де відбувається виняткова ситуація . Якщо ми намагаємося зупинити потік виконання ( викликавши метод stop ( )) , то ми не можемо передбачити , при виконанні якого саме вираження цей потік зупиниться.
Таким чином , всі помилки в Java діляться на синхронні і асинхронні . Перші порівняно простіше , так як принципово можливо знайти точне місце в коді , яке є причиною виникнення виключно ситуації. Звичайно , Java є строгим мовою в тому сенсі , що всі вирази до точки збою обов'язково будуть виконані , в той же час жодне подальше вираження ніколи виконана не буде . Важливо пам'ятати , що помилки можуть виникати як з причини недостатньої уважності програміста (відсутній потрібний клас , або індекс масиву вийшов за допустимі межі ) , так і понезавісящім від нього причин ( стався розрив мережевого з'єднання, збій апаратного забезпечення , наприклад , жорсткого диска , і др . ) . Асинхронні помилки набагато складніше у виявленні і виправленні . Звичайному розробнику дуже скрутно виявити причини збоїв у віртуальній машині. Це можуть бути помилка творців JVM , несумісність з операційною системою , апаратний збій і багато іншого. Все ж сучасні віртуальні машини реалізовані досить добре, і подібні збої відбуваються вкрай рідко (за умови використання якісних комплектуючих ) . Аналогічна ситуація спостерігається і у випадку з примусовою зупинкою потоків виконання. Оскільки ця дія виконується операційною системою , ніколи не можна передбачити, в якому саме місці зупиниться потік . Це означає , що програма може багаторазово відпрацювати коректно , а потім несподівано дати збій просто через те , що потік зупинився в якомусь іншому місці. З цієї причини примусова зупинка вкрай не рекомендується. У відповідній лекції наводяться приклади коректного управління життєвим циклом потоку . При виникненні виняткової ситуації управління передається від коду , що викликав виняткову ситуацію , на найближчий блок catch (або вгору по стеку ) , і створюється об'єкт , успадкований від класу Throwable або його нащадків ( див. діаграму ієрархії класів винятків ) , який містить інформацію про виняткову ситуації і використовується при її обробці . Власне в блоці catch вказується саме клас оброблюваної ситуації. Детально обробка помилок розглядається нижче. Ієрархія за якою передається інформація про виняткову ситуації залежить від того , де ця виняткова ситуація виникла. Якщо це • метод , то управління буде передаватися в те місце , де цей метод був викликаний ; • конструктор , то управління буде передаватися туди , де спробували створити об'єкт (як правило , застосовуючи оператор new ) ; • якщо це статичний ініціалізатор , то управління буде передано туди , де сталося перше звернення класу , що привело його ініціалізацію.Допускается створення власних класів виняткових ситуацій . Здійснюється це за допомогою механізму успадкування, тобто клас користувальницької виняткової ситуації , повинен бути успадкований від клас Throwable або його нащадків.