Java кидає і кидає ключове слово

У цьому підручнику ми навчимось використовувати ключове слово throw і throws для обробки винятків за допомогою прикладів.

У Java винятки можна поділити на два типи:

  • Unchecked Виняток: Вони не перевіряються під час компіляції , але при обкатці time.for наприклад: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, винятків по Errorкласу, і т.д.
  • Перевірені винятки: вони перевіряються під час компіляції. Так , наприклад, IOException, InterruptedExceptionі т.д.

Зверніться до винятків Java, щоб детально дізнатись про перевірені та неперевірені винятки.

Зазвичай нам не потрібно обробляти неперевірені винятки. Це тому, що неперевірені винятки трапляються через помилки програмування. І хороша практика - виправляти їх, а не обробляти.

Цей підручник тепер буде зосереджений на тому, як обробляти перевірені винятки за допомогою throwта throws.

Java кидає ключове слово

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

Його синтаксис:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

Як ви можете бачити з наведеного синтаксису, ми можемо використовувати throwsдля оголошення декілька винятків.

Приклад 1: Java кидає ключове слово

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce IOException File newFile=new File("test.txt"); FileInputStream stream=new FileInputStream(newFile); ) public static void main(String() args) ( try( findFile(); ) catch(IOException e)( System.out.println(e); ) ) ) 

Вихідні дані

 java.io.FileNotFoundException: test.txt (Немає такого файлу або каталогу) 

Коли ми запускаємо цю програму, якщо файл test.txtне існує, FileInputStreamвидається a, FileNotFoundExceptionщо розширює IOExceptionклас.

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

findFile()Метод визначає , що IOExceptionможе бути викинутий. main()Метод викликає цей метод і обробляє виключення , якщо вона кинута.

Викидання кількох винятків

Ось як ми можемо створити кілька винятків за допомогою throwsключового слова.

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

Тут findFile()метод визначає , що він може кинути NullPointerException, IOExceptionі InvalidClassExceptionв своїй throwsстатті.

Зверніть увагу, що ми не обробляли NullPointerException. Це тому, що це неперевірений виняток. Не потрібно вказувати це в throwsпункті та обробляти.

кидає ключове слово проти спробувати … зловити … нарешті

Методів, які можуть спричинити винятки, може бути декілька. Написання try… catchдля кожного методу буде нудним, а код стає довгим і менш читабельним.

throws також корисний, коли ви позначили виняток (виняток, який потрібно обробити), який ви не хочете вловлювати у своєму поточному методі.

Ключове слово Java

throwВикористовується ключове слово явно кинути один виняток.

Коли виникає виняток, потік виконання програми передається від tryблоку до catchблоку. Ми використовуємо throwключове слово в межах методу.

Його синтаксис:

 throw throwableObject;

Об’ємний об’єкт - це екземпляр класу Throwableабо підкласу Throwableкласу.

Приклад 2: Ключове слово Java

 class Main ( public static void divideByZero() ( throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) ) 

Вихідні дані

 Виняток у потоці "main" java.lang.ArithmeticException: Спроба розділити на 0 на Main.divideByZero (Main.java:3) у Main.main (Main.java:7) статус виходу 1 

У цьому прикладі ми явно кидаємо ArithmeticException.

Примітка: ArithmeticException є неперевіреним винятком. Зазвичай не потрібно обробляти неперевірені винятки.

Приклад 3: Викидання перевіреного винятку

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

Вихідні дані

 Файл не знайдено 

findFile()Метод кидає IOExceptionз повідомленням ми передали в конструктор.

Зверніть увагу, що оскільки це перевірений виняток, ми повинні вказати його в throwsпункті.

Методи, які викликають цей findFile()метод, повинні або обробляти цей виняток, або вказувати його за допомогою throwsключового слова самі.

Ми розглянули цей виняток у main()методі. Потік виконання програми передається з tryблоку в catchблок, коли виникає виняток. Отже, решта коду в tryблоці пропускається, а оператори в catchблоці виконуються.

Цікаві статті...