Учебники

Гуава — класс Throwables

Класс Throwables предоставляет служебные методы, связанные с интерфейсом Throwable.

Декларация класса

Ниже приводится объявление для класса com.google.common.base.Throwables.

public final class Throwables
   extends Object

Методы класса

Sr.No Метод и описание
1

статический список <Throwable> getCausalChain (Throwable throwable)

Получает цепочку причин Throwable в виде списка.

2

статический Throwable getRootCause (Throwable throwable)

Возвращает самую внутреннюю причину броска.

3

статическая строка getStackTraceAsString (Throwable throwable)

Возвращает строку, содержащую результат toString (), за которой следует полная рекурсивная трассировка стека throwable.

4

статическое распространение RuntimeException (Throwable throwable)

Распространяет throwable как есть, если это экземпляр RuntimeException или Error, или же в качестве последнего средства, оборачивает его в RuntimeException, а затем распространяется.

5

static <X extends Throwable> void spreadateIfInstanceOf (Throwable throwable, Class <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если он является экземпляром Объявленного типа.

6

static void spreadateIfPossible (Throwable throwable)

Распространяется в точности как есть, если и только если это экземпляр RuntimeException или Error.

7

static <X extends Throwable> void пропагатаIfPossible (Throwable throwable, класс <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error или Объявленный тип.

8

static <X1 extends Throwable, X2 extends Throwable> void spreadateIfPossible (Throwable throwable, класс <X1> DeclaType1, класс <X2> DeclaType2)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error, DeclaType1 или DeclaType2.

статический список <Throwable> getCausalChain (Throwable throwable)

Получает цепочку причин Throwable в виде списка.

статический Throwable getRootCause (Throwable throwable)

Возвращает самую внутреннюю причину броска.

статическая строка getStackTraceAsString (Throwable throwable)

Возвращает строку, содержащую результат toString (), за которой следует полная рекурсивная трассировка стека throwable.

статическое распространение RuntimeException (Throwable throwable)

Распространяет throwable как есть, если это экземпляр RuntimeException или Error, или же в качестве последнего средства, оборачивает его в RuntimeException, а затем распространяется.

static <X extends Throwable> void spreadateIfInstanceOf (Throwable throwable, Class <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если он является экземпляром Объявленного типа.

static void spreadateIfPossible (Throwable throwable)

Распространяется в точности как есть, если и только если это экземпляр RuntimeException или Error.

static <X extends Throwable> void пропагатаIfPossible (Throwable throwable, класс <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error или Объявленный тип.

static <X1 extends Throwable, X2 extends Throwable> void spreadateIfPossible (Throwable throwable, класс <X1> DeclaType1, класс <X2> DeclaType2)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error, DeclaType1 или DeclaType2.

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса Throwables

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, C: /> Guava.

GuavaTester.java

import java.io.IOException;

import com.google.common.base.Objects;
import com.google.common.base.Throwables;

public class GuavaTester {
   public static void main(String args[]) {
   
      GuavaTester tester = new GuavaTester();

      try {
         tester.showcaseThrowables();
         
      } catch (InvalidInputException e) {
         //get the root cause
         System.out.println(Throwables.getRootCause(e));
      
      } catch (Exception e) {
         //get the stack trace in string format
         System.out.println(Throwables.getStackTraceAsString(e));
      }

      try {
         tester.showcaseThrowables1();

      } catch (Exception e) {
         System.out.println(Throwables.getStackTraceAsString(e));
      }
   }

   public void showcaseThrowables() throws InvalidInputException {
      try {
         sqrt(-3.0);
      } catch (Throwable e) {
         //check the type of exception and throw it
         Throwables.propagateIfInstanceOf(e, InvalidInputException.class);
         Throwables.propagate(e);
      }
   }

   public void showcaseThrowables1() {
      try {
         int[] data = {1,2,3};
         getValue(data, 4);
      } catch (Throwable e) {
         Throwables.propagateIfInstanceOf(e, IndexOutOfBoundsException.class);
         Throwables.propagate(e);
      }
   }

   public double sqrt(double input) throws InvalidInputException {
      if(input < 0) throw new InvalidInputException();
      return Math.sqrt(input);
   }

   public double getValue(int[] list, int index) throws IndexOutOfBoundsException {
      return list[index];
   }

   public void dummyIO() throws IOException {
      throw new IOException();
   }
}

class InvalidInputException extends Exception {
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.