public final class ThrowableKit extends Object
Throwable.
See the Guava User Guide entry on Throwables.
| 限定符和类型 | 方法和说明 |
|---|---|
static Throwable |
getRootCause(Throwable throwable)
Returns the innermost cause of
throwable. |
static String |
getStackTraceAsString(Throwable throwable)
Returns a string containing the result of
toString(), followed by the full, recursive stack trace of
throwable. |
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. |
static <X extends Throwable> |
propagateIfInstanceOf(Throwable throwable,
Class<X> declaredType)
Propagates
throwable exactly as-is, if and only if it is an
instance of declaredType. |
static void |
propagateIfPossible(Throwable throwable)
|
static <X extends Throwable> |
propagateIfPossible(Throwable throwable,
Class<X> declaredType)
Propagates
throwable exactly as-is, if and only if it is an
instance of RuntimeException, Error, or
declaredType. |
static <X1 extends Throwable,X2 extends Throwable> |
propagateIfPossible(Throwable throwable,
Class<X1> declaredType1,
Class<X2> declaredType2)
Propagates
throwable exactly as-is, if and only if it is an
instance of RuntimeException, Error,
declaredType1, or declaredType2. |
static RuntimeException |
unchecked(Throwable e) |
public static <X extends Throwable> void propagateIfInstanceOf(Throwable throwable, Class<X> declaredType) throws X extends Throwable
throwable exactly as-is, if and only if it is an
instance of declaredType. Example usage:
try {
someMethodThatCouldThrowAnything();
} catch (IKnowWhatToDoWithThisException e) {
handle(e);
} catch (Throwable t) {
Throwables.propagateIfInstanceOf(t, IOException.class);
Throwables.propagateIfInstanceOf(t, SQLException.class);
throw Throwables.propagate(t);
}
X extends Throwablepublic static void propagateIfPossible(Throwable throwable)
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);
}
public static <X extends Throwable> void propagateIfPossible(Throwable throwable, Class<X> declaredType) throws X extends Throwable
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);
}
throwable - the Throwable to possibly propagatedeclaredType - the single checked exception type declared by the calling
methodX extends Throwablepublic static <X1 extends Throwable,X2 extends Throwable> void propagateIfPossible(Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2) throws X1 extends Throwable, X2 extends Throwable
throwable exactly as-is, if and only if it is an
instance of RuntimeException, Error,
declaredType1, or declaredType2. In the unlikely case
that you have three or more declared checked exception types, you can
handle them all by invoking these methods repeatedly. See usage example
in propagateIfPossible(Throwable, Class).throwable - the Throwable to possibly propagatedeclaredType1 - any checked exception type declared by the calling methoddeclaredType2 - any other checked exception type declared by the calling
methodX1 extends Throwablepublic static RuntimeException propagate(Throwable throwable)
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);
}
}
throwable - the Throwable to propagatepublic static Throwable getRootCause(Throwable throwable)
throwable. The first throwable in
a chain provides context from when the error or exception was initially
detected. Example usage:
assertEquals("Unable to assign a customer id", Throwables.getRootCause(e).getMessage());
public static String getStackTraceAsString(Throwable throwable)
toString(), followed by the full, recursive stack trace of
throwable. Note that you probably should not be parsing the
resulting string; if you need programmatic access to the stack frames,
you can call Throwable.getStackTrace().public static RuntimeException unchecked(Throwable e)
Copyright © 2016. All rights reserved.