logo

хвърлям и хвърлям в Java

В Java обработката на изключения е едно от ефективните средства за обработка на грешки по време на изпълнение, така че редовният поток на приложението да може да бъде запазен. Той обработва грешки по време на изпълнение като NullPointerException ArrayIndexOutOfBoundsException и т.н. За ефективно справяне с тези грешки Java предоставя две ключови думи throw и throws.

Java хвърляне

Ключовата дума throw в Java се използва за изрично хвърляне на изключение от метод или който и да е блок от код. Можем да хвърлим проверено или непроверено изключение. Ключовата дума throw се използва главно за изхвърляне на персонализирани изключения. 

Синтаксис:



хвърлям Инстанция

Където екземплярът е обект от тип Throwable (или негови подкласове като Exception).

Пример:

хвърля ново ArithmeticException('/ по нула');

Но това изключение, т.е. екземплярът трябва да е от тип Хвърляем или подклас на Хвърляем

Потокът на изпълнение на програмата спира веднага след изпълнението на израза за хвърляне и най-близкото обхващане опитай блок се проверява дали има a улов оператор, който съответства на типа изключение. Ако открие контролирано съвпадение, се прехвърля към това изявление, в противен случай следващото обхващане опитай блокът се проверява и така нататък. Ако няма съвпадение улов бъде намерен, тогава манипулаторът на изключение по подразбиране ще спре програмата. 

Раджиникант

Пример: Този пример демонстрира къде се хвърля изключение, уловено и повторно хвърлено вътре в метод.

Java
class Geeks {  static void fun()  {  try {  throw new NullPointerException('demo');  }  catch (NullPointerException e) {  System.out.println('Caught inside fun().');  throw e; // rethrowing the exception  }  }  public static void main(String args[])  {  try {  fun();  }  catch (NullPointerException e) {  System.out.println('Caught in main.');  }  } } 

Изход
Caught inside fun(). Caught in main. 

Обяснение: Горният пример демонстрира използването на ключовата дума throw за изрично хвърляне на NullPointerException. Изключението е уловено вътре в забавление() метод и се хвърля отново, където след това се хваща в метода main().

Пример: Този пример демонстрира аритметично изключение.

Java
// Throwing an arithmetic exception class Geeks {  public static void main(String[] args){  int numerator = 1;  int denominator = 0;  if (denominator == 0) {  // Manually throw an ArithmeticException  throw new ArithmeticException('Cannot divide by zero');  } else {  System.out.println(numerator / denominator);  }  } } 

Изход:

Hangup (SIGHUP)  
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)

Обяснение: Горният пример демонстрира изключение, използващо throw, където ArithmeticException е изрично хвърлено поради деление на нула.

Java хвърля

хвърля е ключова дума в Java, която се използва в подписа на метод, за да покаже, че този метод може да хвърли едно от изброените изключения от типа. Извикващият тези методи трябва да обработи изключението с помощта на блок try-catch. 

Синтаксис:

тип име_на_метод(параметри) хвърля списък_на_изключения

където списък_изключения е разделен със запетаи списък на всички изключения, които даден метод може да хвърли.

В дадена програма, ако има шанс за повдигане на изключение, тогава компилаторът винаги ни предупреждава за това и ние трябва да обработим това проверено изключение. В противен случай ще получим грешка по време на компилиране, казвайки, че неотчетеното изключение XXX трябва да бъде уловено или обявено за изхвърлено. За да предотвратим тази грешка по време на компилиране, можем да обработим изключението по два начина: 

  1. С помощта на try catch
  2. С помощта на хвърля ключова дума

Можем да използваме ключовата дума throws, за да делегираме отговорността за обработката на изключения на извикващия (може да е метод или JVM), тогава извикващият метод е отговорен за обработката на това изключение.  

Пример 1: Необработено изключение

Java
class Geeks {  public static void main(String[] args)  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Изход:

error: unreported exception InterruptedException; must be caught or declared to be thrown

Обяснение: В горната програма получаваме грешка по време на компилиране, тъй като има шанс за изключение, ако основната нишка ще заспи, други нишки получават шанса да изпълнят метода main(), който ще причини InterruptedException. 

Пример 2: Използване throws за обработка на изключение

Java
class Geeks {  public static void main(String[] args)  throws InterruptedException  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Изход:

Hello Geeks

Обяснение: В горната програма, използвайки ключовата дума throws, ние обработихме InterruptedException и ще получим изхода като Здравейте маниаци.

Пример 3: Хвърляне на изключение сthrows

Java
class Geeks {  static void fun() throws IllegalAccessException  {  System.out.println('Inside fun(). ');  throw new IllegalAccessException('demo');  }  public static void main(String args[])  {  try {  fun();  }  catch (IllegalAccessException e) {  System.out.println('Caught in main.');  }  } } 

Изход
Inside fun(). Caught in main. 

Обяснение: Горният пример хвърля IllegalAccessException от метод и го обработва в основния метод с помощта на блок try-catch.

година е изобретен компютърът

Разлика между хвърляне и хвърляния

Основните разлики между throw и throws в Java са следните:

хвърлям

хвърля

Използва се за изрично хвърляне на изключение.

Използва се за деклариране, че даден метод може да хвърли едно или повече изключения.

какво е регистърът на буквите в sql

Използва се вътре в метод или блок от код.

Използва се в сигнатурата на метода.

Може да хвърля както проверени, така и непроверени изключения.

Използва се само за проверени изключения. Непроверените изключения не изискват хвърля

Методът или блокът хвърля изключението.

Извикващият метода е отговорен за обработката на изключението.

Спира незабавно текущия поток на изпълнение.

Той принуждава повикващия да обработва декларираните изключения.

хвърляне на ново ArithmeticException('Грешка');

public void myMethod() хвърля IOException {}