Class ClusterException

  • All Implemented Interfaces:
    java.io.Serializable

    @GwtCompatible
    final class ClusterException
    extends java.lang.RuntimeException
    An ClusterException is a data structure that allows for some code to "throw multiple exceptions", or something close to it. The prototypical code that calls for this class is presented below:
     void runManyThings(List<ThingToRun> thingsToRun) {
       for (ThingToRun thingToRun : thingsToRun) {
         thingToRun.run(); // say this may throw an exception, but you want to
                           // always run all thingsToRun
       }
     }
     

    This is what the code would become:

     void runManyThings(List<ThingToRun> thingsToRun) {
       List<Exception> exceptions = Lists.newArrayList();
       for (ThingToRun thingToRun : thingsToRun) {
         try {
           thingToRun.run();
         } catch (Exception e) {
           exceptions.add(e);
         }
       }
       if (exceptions.size() > 0) {
         throw ClusterException.create(exceptions);
       }
     }
     

    See semantic details at create(Collection).

    • Field Summary

      Fields 
      Modifier and Type Field Description
      java.util.Collection<? extends java.lang.Throwable> exceptions  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ClusterException​(java.util.Collection<? extends java.lang.Throwable> exceptions)  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.RuntimeException create​(java.lang.Throwable... exceptions)  
      static java.lang.RuntimeException create​(java.util.Collection<? extends java.lang.Throwable> exceptions)
      Given a collection of exceptions, returns a RuntimeException, with the following rules: If exceptions has a single exception and that exception is a RuntimeException, return it If exceptions has a single exceptions and that exceptions is not a RuntimeException, return a simple RuntimeException that wraps it Otherwise, return an instance of ClusterException that wraps the first exception in the exceptions collection.
      • Methods inherited from class java.lang.Throwable

        addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • exceptions

        public final java.util.Collection<? extends java.lang.Throwable> exceptions
    • Constructor Detail

      • ClusterException

        private ClusterException​(java.util.Collection<? extends java.lang.Throwable> exceptions)
    • Method Detail

      • create

        public static java.lang.RuntimeException create​(java.lang.Throwable... exceptions)
        See Also:
        create(Collection)
      • create

        public static java.lang.RuntimeException create​(java.util.Collection<? extends java.lang.Throwable> exceptions)
        Given a collection of exceptions, returns a RuntimeException, with the following rules:
        • If exceptions has a single exception and that exception is a RuntimeException, return it
        • If exceptions has a single exceptions and that exceptions is not a RuntimeException, return a simple RuntimeException that wraps it
        • Otherwise, return an instance of ClusterException that wraps the first exception in the exceptions collection.

        Though this method takes any Collection, it often makes most sense to pass a List or some other collection that preserves the order in which the exceptions got added.

        Throws:
        java.lang.NullPointerException - if exceptions is null
        java.lang.IllegalArgumentException - if exceptions is empty