Class Throwables


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

    NOTE: proxy for the Guava implementation of Throwables.

    Since:
    1.14
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private Throwables()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.RuntimeException propagate​(java.lang.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.
      static void propagateIfPossible​(java.lang.Throwable throwable)
      Propagates throwable exactly as-is, if and only if it is an instance of RuntimeException or Error.
      static <X extends java.lang.Throwable>
      void
      propagateIfPossible​(java.lang.Throwable throwable, java.lang.Class<X> declaredType)
      Propagates throwable exactly as-is, if and only if it is an instance of RuntimeException, Error, or declaredType.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Throwables

        private Throwables()
    • Method Detail

      • propagate

        public static java.lang.RuntimeException propagate​(java.lang.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​(java.lang.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 java.lang.Throwable> void propagateIfPossible​(java.lang.Throwable throwable,
                                                                               java.lang.Class<X> declaredType)
                                                                        throws X extends java.lang.Throwable
        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 extends java.lang.Throwable