@GwtCompatible final class ClusterException extends java.lang.RuntimeException
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)
.
Modifier and Type | Field and Description |
---|---|
java.util.Collection<? extends java.lang.Throwable> |
exceptions |
Modifier | Constructor and Description |
---|---|
private |
ClusterException(java.util.Collection<? extends java.lang.Throwable> exceptions) |
Modifier and Type | Method and Description |
---|---|
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. |
static java.lang.RuntimeException |
create(java.lang.Throwable... exceptions) |
private ClusterException(java.util.Collection<? extends java.lang.Throwable> exceptions)
public static java.lang.RuntimeException create(java.lang.Throwable... exceptions)
create(Collection)
public static java.lang.RuntimeException create(java.util.Collection<? extends java.lang.Throwable> exceptions)
RuntimeException
, with the following rules:
exceptions
has a single exception and that exception is a RuntimeException
, return it
exceptions
has a single exceptions and that exceptions is not a
RuntimeException
, return a simple RuntimeException
that wraps it
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.
java.lang.NullPointerException
- if exceptions
is nulljava.lang.IllegalArgumentException
- if exceptions
is empty