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