русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Причини виникнення помилок


Дата додавання: 2014-05-29; переглядів: 1079.


Існує три причини виникнення виняткових ситуацій.

- спроба виконати некоректне вираження. Наприклад, ділення на нуль, або звертання до об'єкта по посиланню, яке рівне null, спроба використовувати клас, опис якого (class-файл) відсутній, і т.д. У таких випадках завжди можна точно вказати, в якому місці відбулася помилка, - саме в некоректному вираженні.

- виконання оператора throw. Цей оператор застосовується для явного породження помилки. Очевидно, що й тут можна вказати місце виникнення виняткової ситуації.

- асинхронні помилки під час виконання програми. Причиною таких помилок можуть бути збої усередині самої віртуальної машини (адже вона також є програмою), або виклик методу stop() у потоку виконання Thread. У цьому випадку неможливо вказати точне місце програми, де відбувається виняткова ситуація. Якщо ми спробуємо зупинити потік виконання (викликавши метод stop()), нам не вдасться пророчити, при виконанні якого саме вираження цей потік зупиниться.

Таким чином, всі помилки в Java діляться на синхронні й асинхронні. З першими порівняно простіше працювати, тому що принципово можливо знайти точне місце в коді, що є причиною виникнення виняткової ситуації. Звичайно, Java є строгою мовою в тому розумінні, що всі вираження до крапки збою обов'язково будуть виконані, і в той же час жодне наступне вираження ніколи виконано не буде. Важливо пам'ятати, що помилки можуть виникати як через недостатню уважність програміста (відсутній потрібний клас, або індекс масиву вийшов за припустимі границі), так і по незалежним від нього причинам (відбувся розрив мережного з'єднання, збій апаратного забезпечення, наприклад, жорсткого диска й ін.).

Асинхронні помилки набагато складніше у виявленні й виправленні. Звичайному розроблювачеві дуже важко виявити причини збоїв у віртуальній машині. Це можуть бути помилки творців JVM, несумісність із операційною системою, апаратний збій і багато чого іншого. Все-таки сучасні віртуальні машини реалізовані досить добре й подібні збої відбуваються вкрай рідко (за умови використання якісних комплектуючих).

При виникненні виняткової ситуації керування передається від коду, що викликав виняткову ситуацію, на найближчий блок catch (або нагору по стеку) і створюється об'єкт, успадкований від класу Throwable, або його нащадків, що містить інформацію про виняткову ситуацію й використовується при її обробці.

Допускається створення власних класів виняткових ситуацій. Здійснюється це за допомогою механізму спадкування, тобто клас користувальницької виняткової ситуації повинен бути успадкований від класу Throwable, або його нащадків.


<== попередня лекція | наступна лекція ==>
Помилки при роботі програми. Виключення (Exceptions) | Обробка виняткових ситуацій. Конструкція try-catch


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн