Class Throwables

java.lang.Object
com.google.api.client.util.Throwables

public final class Throwables extends Object
Static utility methods pertaining to instances of Throwable.

NOTE: proxy for the Guava implementation of Throwables.

Since:
1.14
  • Constructor Details

    • Throwables

      private Throwables()
  • Method Details

    • propagate

      public static RuntimeException propagate(Throwable throwable)
      Propagates throwable as-is if it is an instance of RuntimeException or Error, or else as a last resort, wraps it in a RuntimeException then propagates.

      This method always throws an exception. The RuntimeException return type is only for client code to make Java type system happy in case a return value is required by the enclosing method. Example usage:

      T doSomething() {
      try {
      return someMethodThatCouldThrowAnything();
      } catch (IKnowWhatToDoWithThisException e) {
      return handle(e);
      } catch (Throwable t) {
      throw Throwables.propagate(t);
      }
      }
      
      Parameters:
      throwable - the Throwable to propagate
      Returns:
      nothing will ever be returned; this return type is only for your convenience, as illustrated in the example above
    • propagateIfPossible

      public static void propagateIfPossible(Throwable throwable)
      Propagates throwable exactly as-is, if and only if it is an instance of RuntimeException or Error. Example usage:
      try {
      someMethodThatCouldThrowAnything();
      } catch (IKnowWhatToDoWithThisException e) {
      handle(e);
      } catch (Throwable t) {
      Throwables.propagateIfPossible(t);
      throw new RuntimeException("unexpected", t);
      }
      
      Parameters:
      throwable - throwable (may be null)
    • propagateIfPossible

      public static <X extends Throwable> void propagateIfPossible(Throwable throwable, Class<X> declaredType) throws X
      Propagates throwable exactly as-is, if and only if it is an instance of RuntimeException, Error, or declaredType. Example usage:
      try {
      someMethodThatCouldThrowAnything();
      } catch (IKnowWhatToDoWithThisException e) {
      handle(e);
      } catch (Throwable t) {
      Throwables.propagateIfPossible(t, OtherException.class);
      throw new RuntimeException("unexpected", t);
      }
      
      Parameters:
      throwable - throwable (may be null)
      declaredType - the single checked exception type declared by the calling method
      Throws:
      X