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

50.Обробки виняткових ситуацій

. Конструкция try-catch

У загальному випадку конструкція виглядає так .

 

try {

 ...

} catch ( SomeExceptionClass e ) {

 ...

} catch ( AnotherExceptionClass e ) {

 ...

}

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

дужки оператора try . Якщо під час його виконання не відбувається ніяких позаштатних

ситуацій , то далі управління передається , за що закриває фігурну дужку , останнього

оператор catch асоційованого з даним оператором try .

У разі якщо в межах try виникає виняткова ситуація , то далі виконання

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

• виникла виняткова ситуація , клас якої вказаний як параметр одного

з блоків catch . У цьому випадку проводиться виконання блоку коду асоційованого

з цим catch ( укладеного у фігурні дужки) . Далі якщо код в цьому блоці

завершується нормально , то і звістка оператор try завершується нормально і керування

передається на оператор (вираз) наступний за закриваючою фігурною дужкою

останнього catch асоційованого з даним try . Якщо код в catch завершується

нештатно , то і весь try завершується нештатно з тієї ж причини .

• якщо виникла виняткова ситуація , яка клас якої не вказаний як

аргумент , ні в одному catch , то виконання всього try завершується нештатно .

Якщо в послідовності операторів можуть виникнути як помилки введення / виводу так і

помилки арифметичних обчислень , зовсім немає потреби поміщати різні фрагменти

коду в різні оператори try {} catch () { } . Досить забезпечити кілька catch ( ) для

різних типів винятків.

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

Оператор finally призначений для того , щоб забезпечити гарантоване виконання

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

• існує оператор catch , який перехоплює даний тип винятку , відбувається

виконання пов'язаного з catch блоку.- Якщо блок catch виконується нормально , то виконується блок finally

• в свою чергу якщо блок finally завершується нормально , то весь try завершується

нормально .

• Якщо finally завершується попередньо , то і весь оператор try завершується

попередньо з тієї ж причини .

- Якщо блок catch завершується ненормально , то виконується блок finally

• в свою чергу , якщо блок finally завершується нормально , то оператор try

завершується не нормально , з тієї ж причини, з якої не нормально

завершився блок catch

• якщо блок finally завершується ненормально , то весь блок try завершується

ненормально , з тієї ж причини , що і блок finally

• в списку операторів catch чи не знаходиться такого , який обробив б виняток. Все одно виконується блок finally . У цьому випадку , якщо

- Finally завершиться нормально , весь try завершиться не нормально з тієї ж причини

по якій було порушено виконання try .

- Finally завершиться ненормально , то try завершиться ненормально з тієї ж причини ,

по якій ненормально завершився finally

Якщо оператор try завершився нормально , то виконається блок finally . І якщо

• блок finally завершиться нормально , то весь try завершиться нормально

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

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

ситуації , виникне нова виняткова ситуація , то виняткова ситуація , яка

послужила першопричиною буде втрачена .приклад застосування конструкції try - catch - finally . 

try { byte [] buffer = new byte [ 128 ] ; FileInputStream fis = new FileInputStream ( " file.txt " ) ; while ( fis.read ( buffer )> 0 ) {  ... Обробка даних}} catch ( IOException es ) {  ... Обробка винятки ...} finally { fis.flush (); fis.close ();}

Приклад застосування оператора

return :try { ... return 0 ;}catch ( MyException ex ) { ...

 System.out.println ( " Exception " ) ; return -1 ;}finally {

 ...

 System.out.println ( " Finally " ) ;

}

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