русс | укр

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

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


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


Оператор try


Дата додавання: 2015-01-08; переглядів: 1071.


 

Оператор try містить три частини:

§ контрольований блок - складений оператор, що передує ключовим словом try. У контрольований блок включаються потенційно небезпечні оператори програми;

§ один або декілька обробників виключень - блоків catch, в яких описується, як обробляються помилки різних типів;

§ блок завершення finally виконується незалежно від того, виникла помилка в контрольованому блоці чи ні.

Синтаксис оператора try:

 

try блок [ блоки catch ] [ блок finally ]

Бути відсутніми можуть або блоки catch, або блок finally, але не обидва одночасно.

Розглянемо, яким чином реалізується обробка виняткових ситуацій.

1. Обробка виключення починається з появи помилки. Функція або операція, в якій виникла помилка, генерує виключення. Як правило, виключення генерується не безпосередньо в блоці try, а у функціях, прямо або побічно в нього вкладених.

2. Виконання поточного блоку припиняється, відшукується відповідний обробник виключення, і йому передається управління.

3. Виконується блок final1у, якщо він присутній (цей блок виконується і в тому випадку, якщо помилка не виникла).

4. Якщо обробник не знайдений, викликається стандартний обробник виключення. Його дії залежать від конфігурації середовища. Зазвичай він виводить на екран вікно з інформацією про виключення і завершує поточний процес.

 

Подібні вікна не призначені для користувачів програми, тому всі виключення, які можуть виникнути в програмі, мають бути перехоплені і оброблені.

 

Обробники виключень повинні розташовуватися безпосередньо за блоком try. Вони починаються з ключового слова catch, за яким в дужках слідує тип оброблюваного виключення. Можна записати один або декілька обробників відповідно до типів оброблюваних виключень. Блоки catch є видимими в тому порядку, в якому вони записані, поки не буде знайдений відповідний типу викинутого виключення.

Синтаксис обробників нагадує визначення функції з одним параметром - типом виключення. Існують три форми запису:

 

catch( тип ім'я ) { ... /* тіло обробника */ }

catch( тип ) {... /* тіло обробника */ }

catch { ... /* тіло обробника */ }

 

Перша форма застосовується, коли ім'я параметра використовується в тілі обробника для виконання яких-небудь дій, наприклад виведення інформації про виключення.

Друга форма не припускає використання інформації про виключення, грає роль тільки його тип.

Третя форма застосовується для перехоплення всіх виключень. Оскільки обробники є видимими в тому порядку, в якому вони записані, обробник третього типу (він може бути тільки один) слід поміщати після всіх останніх. Приклад:

 

trу

{

// Контрольований блок

}

 

catch (OvertlowException е )

{

//Обробка виключення класу OverflowException (переповнення)

}

catch (DivideByZeroExceptfon)

{

//Обробка виключення класу DivideByZeroException (ділення на 0)

}

catch {

//Обробка усіх інших виключень

}

 

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

 

У лістингу 4.11 приведена програма, що обчислює силу струму по заданій напрузі і опору. Оскільки вірогідність невірного набору дійсного числа досить висока, оператор введення включений в контрольований блок.


<== попередня лекція | наступна лекція ==>
Обробка виняткових ситуацій | Оператор throw


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