Що таке виняток у Java?
Виняток у Java - це подія, яка перериває виконання програмних інструкцій і порушує нормальний потік виконання програми. Це об’єкт, який обгортає інформацію про подію помилки, яка сталася в межах методу, і передається системі виконання. У Java винятки в основному використовуються для позначення різних типів умов помилок.
У цьому підручнику ви дізнаєтесь-
- Що таке виняток?
- Навіщо нам виняток?
- Як обробляти винятки
- Спробуйте Catch Block
- Ієрархія класу винятків Java
- Блок Java нарешті
Існує два типи помилок:
- Складіть помилки часу
- Помилки виконання
Помилки часу компіляції можна знову класифікувати знову на два типи:
- Помилки синтаксису
- Семантичні помилки
Приклад синтаксичних помилок:
Замість декларування
int a;
Ви помилково оголосили, in a;
що компілятор видасть помилку.
Приклад: Ви оголосили змінну
int a;
і після деяких рядків коду ви знову оголошуєте ціле число як int a;
. Всі ці помилки виділяються під час компіляції коду.
Приклад помилок виконання
Помилка виконання називається помилкою винятків . Будь-яка подія, яка перериває звичайний потік виконання програми.
Прикладом для винятків є арифметичний виняток, виняток Nullpointer, виняток ділення на нуль тощо.
Винятки в Java - це те, що поза контролем розробників.
Клацніть тут, якщо відео недоступне
Навіщо нам виняток?
Припустимо, ви закодували програму для доступу до сервера. Поки ви розробляли код, справи працювали нормально.
Під час фактичного запуску сервер не працює. Коли ваша програма намагалася отримати до неї доступ, виникає виняток.
Як обробляти винятки
Дотепер ми бачили, виняток знаходиться поза контролем розробника. Але звинувачувати ваш провал коду в екологічних проблемах - це не рішення. Вам потрібно надійне програмування, яке опікується винятковими ситуаціями. Такий код відомий як Обробник винятків.
У нашому прикладі гарною обробкою винятків було б, коли сервер не працює, підключитися до резервного сервера.
Для цього введіть свій код для підключення до сервера (використовуючи традиційні умови if та else).
Ви перевірите, чи не працює сервер. Якщо так, напишіть код для підключення до сервера резервної копії.
Така організація коду з використанням циклу "if" та "else" не є ефективною, коли ваш код має обробляти кілька винятків Java.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Спробуйте Catch Block
Java забезпечує вбудовану виняткову обробку.
- Звичайний код переходить у блок TRY .
- Код обробки винятків надходить у блок CATCH
У нашому прикладі блок TRY міститиме код для підключення до сервера. Блок CATCH міститиме код для підключення до сервера резервної копії.
Якщо сервер працює, код у блоці CATCH буде ігноруватися. Якщо сервер не працює, виникає виняток, і код у блоці catch буде виконаний.
Отже, так обробляється виняток у Java.
Синтаксис використання функції try & catch
try{statement(s)}catch (exceptiontype name){statement(s)}
Приклад
Крок 1) Скопіюйте наступний код у редактор
class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}
Крок 2) Збережіть файл і скомпілюйте код. Запустіть програму за допомогою команди Java JavaException
Крок 3) Арифметичний виняток - ділиться на нуль, як показано нижче, для рядка 5, а рядок # 6 ніколи не виконується
Крок 4) Тепер давайте подивимося, як спробувати і зловити допоможе нам впоратися з цим винятком. Ми помістимо виняток, що спричиняє рядок коду, у блок try , за яким слідує блок catch . Скопіюйте наступний код у редактор.
class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}
Крок 5) Збережіть, скомпілюйте та запустіть код. Ви отримаєте наступний результат
Як ви спостерігаєте, виняток обробляється, і останній рядок коду також виконується. Крім того, зауважте, що рядок №7 не буде виконаний, оскільки як тільки виникає виняток, потік управління переходить до блоку catch.
Примітка: Об'єкт AritmeticException "e" містить інформацію про виняток, що стався, який може бути корисним при виконанні дій відновлення.
Ієрархія класу винятків Java
Після того, як один оператор catch виконується, інші обходять, і виконання продовжується після блоку try / catch. Вкладені блоки catch дотримуються ієрархії винятків.- Усі класи винятків у Java розширюють клас 'Throwable'. Throwable має два підкласи - Помилка та Виняток
- Клас Error визначає виняток або проблеми, які, як очікується, не виникають у звичайних обставинах нашою програмою, наприклад, помилка пам'яті, апаратна помилка, помилка JVM тощо
- Клас Exception представляє винятки, з якими може працювати наша програма, і нашу програму можна відновити з цього винятку за допомогою блоку try and catch
- Виняток виконання - це підклас класу винятків. Виняток цього типу являє собою виняток, який виникає під час виконання та який не може бути відстежений під час компіляції. Чудовим прикладом того ж є ділення на нуль винятку, або виняток нульового покажчика тощо
- Виняток IO генерується під час операцій введення та виведення
- Перервані винятки в Java генеруються під час декількох потоків.
Крок 1) Скопіюйте наступний код у редактор.
class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}
Крок 2) Збережіть файл і скомпілюйте код. Запустіть програму за допомогою команди Java JavaException .
Крок 3) Генерується ArrayIndexOutOfBoundsException. Змініть значення int d на 0. Збережіть, скомпілюйте та запустіть код.
Крок 4 ) Необхідно створити ArithmeticException.
Крок 5) Розкоментуйте рядок №10 до рядка №12. Збережіть, скомпілюйте та запустіть код.
Крок 6) Помилка компіляції? Це тому, що Exception є базовим класом ArithmeticException Exception. Будь-який виняток, викликаний ArithmeticException, також може оброблятися класом Exception, тому блок catch ArithmeticException ніколи не отримає шанс бути виконаним, що робить його зайвим. Звідси помилка компіляції.
Блок Java нарешті
Блок нарешті виконується незалежно від винятку, викликаного в блоці спроби. Це необов'язково використовувати з Ьгой блоком.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
У випадку, якщо в блоці try виникає виняток, нарешті блок виконується після виконання блоку catch.
Приклад
Крок 1) Скопіюйте наступний код у редактор.
class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}
Крок 2) Збережіть, скомпілюйте та запустіть код.
Крок 3) Очікуваний результат. Нарешті, блок виконується, навіть якщо викликано виняток.
Крок 4) Змініть значення змінної d = 1. Збережіть, скомпілюйте та запустіть код і спостерігайте за результатами. Низ форми
Короткий зміст :
- Винятком є помилка часу виконання , яке перериває нормальний потік програми execution.Disruption під час виконання програми, називається , як помилки або виключення.
- Помилки класифікуються на дві категорії
- Помилки компіляції часу - Синтаксичні помилки, Семантичні помилки
- Помилки виконання - виняток
- Надійна програма повинна обробляти всі виключення і по- , як і раніше з нормальним потоком виконання програми. Java забезпечує вбудований винятковий метод обробки
- Обробник винятків - це набір коду, який обробляє винятки . Винятки можна обробляти на Java, використовуючи функцію try & catch.
- Спробувати заблокувати : На цьому блоці діє звичайний код.
- Блок лову : Якщо в звичайному коді є помилка, він увійде в цей блок