Верижни изключения в Java

Верижни изключения в Java

Верижните изключения в Java позволяват свързването на едно изключение с друго, т.е. едно изключение описва причината за друго изключение.

  • Например разгледайте ситуация, в която метод хвърля an ArithmeticException поради опит за деление на нула.
  • Но основната причина за грешката беше входно-изходна грешка, която накара делителя да бъде нула.
  • В такива случаи верижните изключения помагат да се разпространяват както основните, така и основните причини за грешката.

Пример : Следният пример демонстрира как да използвате верижни изключения в Java.

Java
   // Working of chained exceptions   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Creating an exception      NumberFormatException     ex     =     new     NumberFormatException  (  'Primary Exception'  );      // Setting the cause of the exception      ex  .  initCause  (  new     NullPointerException  (  'Root cause of the exception'  ));      // Throwing the exception with a cause      throw     ex  ;      }         catch     (  NumberFormatException     ex  )     {          // Displaying the primary exception      System  .  out  .  println  (  'Caught Exception: '     +     ex  );      // Displaying the root cause of the exception      System  .  out  .  println  (  'Cause of Exception: '     +     ex  .  getCause  ());      }      }   }   

Изход
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

Забележка: Верижните изключения, известни също като вложени изключения, ни позволяват да свържем причина с изключение в Java. Това е полезно, когато искаме да разпространим информация за първоначалната причина за изключение.

Конструктори

  • Throwable (Throwable Причина) : Където причината е изключението, което причинява текущото изключение.
  • Throwable (String msg Throwable Причина) : Където msg е съобщението за изключение, а причината е изключението, което причинява текущото изключение.

Методи за Throwable Поддържащи верижни изключения

  1. getCause() : Този метод връща действителната причина за изключение.
  2. initCause (причина за хвърляне) : Този метод задава причината за извикващото изключение.

Пример: Използване на персонализирано съобщение с верижни изключения

В Java можем да веригираме изключения, като използваме конструктора на класа Throwable.

Java
   // Use a custom message with chained exception   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Code that might throw an exception      int  []     n     =     new     int  [  5  ]  ;      int     divisor     =     0  ;      for     (  int     i     =     0  ;     i      <     n  .  length  ;     i  ++  )     {      int     res     =     n  [  i  ]     /     divisor  ;      System  .  out  .  println  (  res  );      }      }         catch     (  ArithmeticException     e  )     {          // Creating a new exception with       // the original as the cause      throw     new     RuntimeException      (  'Error: Division by zero occurred'       e  );      }      }   }   

Изход:

Изход

Обяснение: В този пример масив от цели числа и задава делителя на 0.

  • Вътре в блока try се опитва да раздели всеки елемент от масива на 0, което хвърля ArithmeticException.
  • Това ArithmeticException се улавя в блока catch, където се създава ново RuntimeException с оригиналното изключение, т.е. ArithmeticException като негова причина.
  • Тъй като RuntimeException не е уловен, което показва проследяването на стека, включително RuntimeException и ArithmeticException.

Предимства на верижните изключения:

Предимствата на верижните изключения са изброени по-долу:

  • Това изключение помага при отстраняване на грешки, като предоставя подробности както за основните, така и за основните причини.
  • Той опростява обработката на грешки, като позволява разпространението на пълен контекст на изключение.
  • Това подобрява проследимостта на грешките в сложни приложения.

Недостатъци на верижните изключения:

  • Ако не се използва правилно, това може да направи проследяването на стека по-дълго и по-трудно за четене.
  • Прекомерната употреба може да причини объркващи съобщения за грешка, ако изключенията са верижни ненужно.
  • Разработчиците трябва да гарантират, че значимите причини са свързани; в противен случай може да подведе по време на отстраняване на грешки.
Предложен тест Редактиране на тест 3 въпроса

Каква е основната цел на верижните изключения в Java?

  • А

    За да скриете основната причина за изключение

  • Б

    Да асоциира едно изключение с друго

  • В

    За подобряване на производителността на кода

  • г

    За автоматично коригиране на грешки по време на изпълнение

Обяснение:

Верижните изключения позволяват свързване на едно изключение с друго, за да се покаже основната причина.

Кой метод се използва за задаване на причината за изключение?

  • А

    getMessage()

  • Б

    setException()

  • В

    initCause()

  • г

    initCause()

Обяснение:

Методът initCause() задава основната причина за изключение.

В примера какъв тип изключение е зададено като причина за NumberFormatException?

  • А

    IOException

  • Б

    ArithmeticException

  • В

    NullPointerException

  • г

    RuntimeException

Обяснение:

Примерът задава NullPointerException като причина за NumberFormatException.

Верижни изключения в JavaТестът е завършен успешно Вашият резултат:   2 /3 Точност:  0% Влезте, за да видите обяснението 1 /3 1 /3 < Previous Следващ >