Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори JAVA.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.34 Кб
Скачать

52.Використання оператора throw

Крім того, що зумовлена ​​виняткова ситуація могла бути збуджена

виконуючою системою Java , програміст сам може згенерувати цю умову. Робиться це за допомогою оператора throw .

Наприклад .... public int calculate ( int theValue ) {

if ( theValue < 0 ) {

throw new Exception ( " Параметр для обчислення не повинен бути негативним " ) ;

}} ...

В даному випадку , передбачається , як параметр методу може бути передано

тільки позитивне значення , якщо ця умова не виконана , то за допомогою оператора

throw збуджується виняткова ситуація. Насправді даний коду не буде

откомпилирован , т.к. компілятор видасть повідомлення про помилку. Якщо в методі збуджується

виняткова ситуація , то має бути виконана одна з двох правил

• виняткова ситуація повинна бути оброблена в тілі методу (тобто код долженвозбуждающій виняткову ситуацію , повинен бути поміщений в блок try {}

catch ( UserException ue ) { } )

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

викликати даний метод . Тобто Наведений вище приклад повинен бути приведений до

наступного вигляду ....

public int calculate ( int theValue ) throws Exception {

if ( theValue < 0 ) {

throw new Exception ( " Some descriptive info " ) ;

Конструкція try - catch - finally Стор. 29 з 51

Програмування на Java

Rendered by www.RenderX.com }

} ...

Т.ч. збудження виняткової ситуації в програмі проводиться за допомогою

оператора throw , ліворуч від якого вказується об'єкт , який може бути приведений до

типом Throwable . ( Як правило цей об'єкт створюється в цьому ж місці за допомогою оператора

new , хоча ця умова і не є обов'язковим)

У деяких випадках після обробки виняткової ситуації , можливо , виникне

необхідність передати інформацію про неї в викликає код .

У цьому випадку throw використовується вдруге.

наприклад

...

try {

 ...

} catch ( IOException ex ) {

 ...

 / / Обробка виняткової ситуації

 ...

 / / Повторне збудження виняткової ситуації

 throw ex ;

}

 

Розглянемо ще один випадок.

Припустимо , що оператор throw застосовується всередині конструкції try catch .

 

try {

 ...

 throw new IOException ();

 ...

} catch ( Exception e ) {

 ...

}

У цьому випадку , виключення порушену в блоці try не буде віддане для обробки на

більш високий рівень ієрархії , а обробиться в межах блоку try catch . , т.к. тут

міститься оператор , який може це виняток перехватіть.Т.е . як би станеться

неявна передача керування , на відповідний блок cacth

Слід звернути увагу слухачів , що такий спосіб використання конструкції try

catch не рекомендується, тому витрати на обробку будуть незрівнянно вище , ніж при

використанні операторів if . Слід звернути також увагу на те , що блок catch

може бути порожнім , тобто не виробляти ніякої обробки , проте виняток

вважатиметься перехоплених і далі по ієрархії передано не буде .

 

try {

Програмування на Java

Стор. 30 з 51 Помилки при роботі програми . Винятки ( Exceptions ) .

Rendered by www.RenderX.com ...

 throw new IOException ();

 ...

} catch ( Exception e ) { ;

}

в даному випадку оператор try завершиться нормально .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]