javadoc.com.google.common.base.Throwables.html Maven / Gradle / Ivy
Throwables (Guava: Google Core Libraries for Java - release 05)
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV CLASS
NEXT CLASS
FRAMES
NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD
DETAIL: FIELD | CONSTR | METHOD
com.google.common.base
Class Throwables
java.lang.Object
com.google.common.base.Throwables
public final class Throwables
- extends Object
Static utility methods pertaining to instances of Throwable
.
- Since:
- 1
- Author:
- Kevin Bourrillion, Ben Yu
Method Summary | ||
---|---|---|
static List<Throwable> |
getCausalChain(Throwable throwable)
Gets a Throwable cause chain as a list. |
|
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
|
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)
Propagates throwable exactly as-is, if and only if it is an
instance of RuntimeException or Error . |
|
static
|
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
|
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 Exception |
throwCause(Exception exception,
boolean combineStackTraces)
Rethrows the cause exception of a given throwable, discarding the original throwable. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
propagateIfInstanceOf
public static <X extends Throwable> void propagateIfInstanceOf(@Nullable Throwable throwable, Class<X> declaredType) throws X extends Throwable
- Propagates
throwable
exactly as-is, if and only if it is an instance ofdeclaredType
. 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); }
- Throws:
X extends Throwable
propagateIfPossible
public static void propagateIfPossible(@Nullable Throwable throwable)
- Propagates
throwable
exactly as-is, if and only if it is an instance ofRuntimeException
orError
. Example usage:try { someMethodThatCouldThrowAnything(); } catch (IKnowWhatToDoWithThisException e) { handle(e); } catch (Throwable t) { Throwables.propagateIfPossible(t); throw new RuntimeException("unexpected", t); }
propagateIfPossible
public static <X extends Throwable> void propagateIfPossible(@Nullable Throwable throwable, Class<X> declaredType) throws X extends Throwable
- Propagates
throwable
exactly as-is, if and only if it is an instance ofRuntimeException
,Error
, ordeclaredType
. Example usage:try { someMethodThatCouldThrowAnything(); } catch (IKnowWhatToDoWithThisException e) { handle(e); } catch (Throwable t) { Throwables.propagateIfPossible(t, OtherException.class); throw new RuntimeException("unexpected", t); }
- Parameters:
throwable
- the Throwable to possibly propagatedeclaredType
- the single checked exception type declared by the calling method- Throws:
X extends Throwable
propagateIfPossible
public static <X1 extends Throwable,X2 extends Throwable> void propagateIfPossible(@Nullable Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2) throws X1 extends Throwable, X2 extends Throwable
- Propagates
throwable
exactly as-is, if and only if it is an instance ofRuntimeException
,Error
,declaredType1
, ordeclaredType2
. 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 inpropagateIfPossible(Throwable, Class)
.- Parameters:
throwable
- the Throwable to possibly propagatedeclaredType1
- any checked exception type declared by the calling methoddeclaredType2
- any other checked exception type declared by the calling method- Throws:
X1 extends Throwable
propagate
public static RuntimeException propagate(Throwable throwable)
- Propagates
throwable
as-is if it is an instance ofRuntimeException
orError
, or else as a last resort, wraps it in aRuntimeException
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
getRootCause
public static Throwable getRootCause(Throwable throwable)
- Returns the innermost cause of
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());
getCausalChain
@Beta public static List<Throwable> getCausalChain(Throwable throwable)
- Gets a
Throwable
cause chain as a list. The first entry in the list will bethrowable
followed by its cause hierarchy. Note that this is a snapshot of the cause chain and will not reflect any subsequent changes to the cause chain.Here's an example of how it can be used to find specific types of exceptions in the cause chain:
Iterables.filter(Throwables.getCausalChain(e), IOException.class));
- Parameters:
throwable
- the non-nullThrowable
to extract causes from- Returns:
- an unmodifiable list containing the cause chain starting with
throwable
getStackTraceAsString
public static String getStackTraceAsString(Throwable throwable)
- Returns a string containing the result of
toString()
, followed by the full, recursive stack trace ofthrowable
. Note that you probably should not be parsing the resulting string; if you need programmatic access to the stack frames, you can callThrowable.getStackTrace()
.
throwCause
@Beta public static Exception throwCause(Exception exception, boolean combineStackTraces) throws Exception
- Rethrows the cause exception of a given throwable, discarding the original
throwable. Optionally, the stack frames of the cause and the outer
exception are combined and the stack trace of the cause is set to this
combined trace. If there is no cause the original exception is rethrown
unchanged in all cases.
- Parameters:
exception
- the exception from which to extract the causecombineStackTraces
- if true the stack trace of the cause will be replaced by the concatenation of the trace from the exception and the trace from the cause.- Throws:
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |