logo

Типи винятків у Java

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

Винятки можна класифікувати двома способами:

  1. Вбудовані винятки
    • Перевірений виняток
    • Неперевірений виняток
  2. Винятки, визначені користувачем
Типи винятків у Java

Вбудований виняток

Винятки які вже доступні в Бібліотеки Java називаються вбудований виняток . Ці винятки можуть визначити ситуацію помилки, щоб ми могли зрозуміти причину отримання цієї помилки. Його можна розділити на дві великі категорії, тобто перевірені винятки і неперевірений виняток .

Перевірений виняток

Перевірено винятки називаються під час компіляції винятки, оскільки ці винятки перевіряються компілятором під час компіляції. Компілятор перевіряє, чи обробляє програміст виняток чи ні. Програміст повинен обробити виняток; інакше система показала помилку компіляції.

CheckedExceptionExample.java

 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

У наведеному вище коді ми намагаємося прочитати Привіт.txt файл і відобразити його дані або вміст на екрані. Програма створює наступні винятки:

  1. The FileInputStream(файл ім'я файлу) конструктор викидає FileNotFoundException це перевірений виняток.
  2. The читати() метод FileInputStream клас кидає IOException .
  3. The закрити() метод також створює виняток IOException.

Вихід:

Типи винятків у Java

Як усунути помилку?

В основному є два способи, за допомогою яких ми можемо вирішити ці помилки.

1) Винятки трапляються в основному методі. Ми можемо позбутися цих помилок компіляції, оголосивши виняток у основному методі кидки Ми оголошуємо лише IOException, а не FileNotFoundException, через зв’язок «дочірній-батьківський». Клас IOException є батьківським класом FileNotFoundException, тому цей виняток автоматично покриватиметься IOException. Ми оголосимо виняток у такий спосіб:

 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Якщо ми скомпілюємо та запустимо код, помилки зникнуть, і ми побачимо дані файлу.

Типи винятків у Java

2) Ми також можемо обробляти ці винятки за допомогою спробувати-зловити Однак спосіб, який ми використовували вище, не є правильним. Ми повинні надати змістовне повідомлення для кожного типу винятку. Зробивши це, було б легко зрозуміти помилку. Ми будемо використовувати блок try-catch таким чином:

Виняток.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Ми побачимо відповідне повідомлення про помилку 'Файл не знайдено!' на консолі, оскільки в цьому місці немає такого файлу.

Типи винятків у Java

Неперевірені винятки

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

Примітка. Клас RuntimeException може вирішувати всі неперевірені винятки через зв’язок «дочірній-батьківський».

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

У наведеній вище програмі ми розділили 35 на 0. Код буде успішно скомпільовано, але під час виконання видаватиметься помилка ArithmeticException. При діленні числа на 0 створюється виняток ділення на нуль, який є винятком зняття прапорця.

Вихід:

Типи винятків у Java

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Вихід:

заблокувати додаток для Android
Типи винятків у Java

У наведеному вище коді ми намагаємося отримати елемент, розташований у позиції 7, але довжина масиву дорівнює 6. Код успішно компілюється, але під час виконання створює виняток ArrayIndexOutOfBoundsException.

Виняток, визначений користувачем

в Java , ми вже маємо деякі вбудовані класи винятків, наприклад ArrayIndexOutOfBoundsException , NullPointerException , і ArithmeticException . Ці винятки можуть запускатися за певних попередньо визначених умов. У Java ми можемо написати власний клас винятків, розширюючи клас Exception. Ми можемо створити власний виняток для певної умови за допомогою ключового слова throw. Щоб створити визначений користувачем виняток, ми повинні мати базові знання в спробувати-зловити блок і кинути ключове слово .

Давайте напишемо а Java програма і створити виняток, визначений користувачем.

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Вихід:

Типи винятків у Java

опис:

У наведеному вище коді ми створили два класи, тобто UserDefinedException і NewException . The UserDefinedException має наш основний метод, і NewException class - це наш визначений користувачем клас винятків, який розширюється виняток . В NewException класу ми створюємо змінну х типу integer і присвоїти йому значення в конструкторі. Після присвоєння значення цій змінній ми повертаємо повідомлення про виняток.

В UserDefinedException клас, ми додали a спробувати-зловити блокувати. У розділі спроби ми кидаємо виняток, тобто NewException і передати йому ціле число. Значення буде передано в клас NewException і поверне повідомлення. Ми ловимо це повідомлення в блоці catch і показуємо його на екрані.

Різниця між перевіреним і неперевіреним винятком

Так ні Перевірений виняток Неперевірений виняток
1. Ці винятки перевіряються під час компіляції. Ці винятки також обробляються під час компіляції. Ці винятки прямо протилежні перевіреним виняткам. Ці винятки не перевіряються та не обробляються під час компіляції.
2. Ці винятки є прямими підкласами винятків, але не розширені з класу RuntimeException. Вони є прямими підкласами класу RuntimeException.
3. Код видає помилку компіляції у випадку, коли метод видає перевірене виключення. Компілятор не в змозі обробити виняток самостійно. Код компілюється без будь-яких помилок, тому що компілятор не помічає винятків. Ці винятки є результатом створених користувачем помилок у логіці програмування.
4. Ці винятки здебільшого трапляються, коли ймовірність відмови надто висока. Ці винятки виникають переважно через помилки програмування.
5. Загальні перевірені винятки включають IOException, DataAccessException, InterruptedException тощо. Поширені неперевірені винятки включають ArithmeticException, InvalidClassException, NullPointerException тощо.
6. Ці винятки поширюються за допомогою ключового слова throws. Вони автоматично поширюються.
7. Потрібно надати блоки try-catch і try-finally для обробки перевіреного винятку. У випадку неперевіреного винятку це не є обов’язковим.

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

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions тощо входять до категорії Вбудований виняток . Іноді вбудованих винятків недостатньо для пояснення чи опису певних ситуацій. Для опису цих ситуацій ми повинні створити власні винятки, створивши клас винятків як підклас класу Виняток клас. Ці типи винятків належать до категорії Виняток, визначений користувачем .