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