public final class Throwables
extends java.lang.Object
Throwable
s.Modifier and Type | Field and Description |
---|---|
private static java.util.function.Function<java.lang.Throwable,java.lang.String> |
ERROR_DESCRIPTION_EXTRACTOR |
private static java.lang.String |
JAVA_LANG_REFLECT_CONSTRUCTOR |
private static java.lang.String |
ORG_ASSERTJ |
private static java.lang.String |
ORG_ASSERTJ_CORE_ERROR_CONSTRUCTOR_INVOKER |
Modifier | Constructor and Description |
---|---|
private |
Throwables() |
Modifier and Type | Method and Description |
---|---|
static void |
appendStackTraceInCurrentThreadToThrowable(java.lang.Throwable t,
java.lang.String methodToStartFrom)
Appends the stack trace of the current thread to the one in the given
. |
static java.util.List<java.lang.String> |
describeErrors(java.util.List<? extends java.lang.Throwable> errors) |
static java.lang.Throwable |
getRootCause(java.lang.Throwable throwable)
Get the root cause (ie the last non null cause) from a
Throwable . |
static java.lang.String |
getStackTrace(java.lang.Throwable throwable)
Get the stack trace from a
Throwable as a String . |
static void |
removeAssertJRelatedElementsFromStackTrace(java.lang.Throwable throwable)
Removes the AssertJ-related elements from the
stack trace that have little value for
end user. |
private static java.util.List<java.lang.StackTraceElement> |
stackTraceInCurrentThread() |
private static java.util.List<java.lang.StackTraceElement> |
stackTraceInCurrentThread(java.lang.String methodToStartFrom) |
private static final java.lang.String ORG_ASSERTJ_CORE_ERROR_CONSTRUCTOR_INVOKER
private static final java.lang.String JAVA_LANG_REFLECT_CONSTRUCTOR
private static final java.lang.String ORG_ASSERTJ
private static final java.util.function.Function<java.lang.Throwable,java.lang.String> ERROR_DESCRIPTION_EXTRACTOR
public static java.util.List<java.lang.String> describeErrors(java.util.List<? extends java.lang.Throwable> errors)
public static void appendStackTraceInCurrentThreadToThrowable(java.lang.Throwable t, java.lang.String methodToStartFrom)
Throwable
.t
- the given Throwable
.methodToStartFrom
- the name of the method used as the starting point of the current thread's stack trace.private static java.util.List<java.lang.StackTraceElement> stackTraceInCurrentThread(java.lang.String methodToStartFrom)
private static java.util.List<java.lang.StackTraceElement> stackTraceInCurrentThread()
public static void removeAssertJRelatedElementsFromStackTrace(java.lang.Throwable throwable)
Throwable
stack trace that have little value for
end user. Therefore, instead of seeing this:
org.junit.ComparisonFailure: expected:<'[Ronaldo]'> but was:<'[Messi]'>
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:501)
at org.assertj.core.error.ConstructorInvoker.newInstance(ConstructorInvoker.java:34)
at org.assertj.core.error.ShouldBeEqual.newComparisonFailure(ShouldBeEqual.java:111)
at org.assertj.core.error.ShouldBeEqual.comparisonFailure(ShouldBeEqual.java:103)
at org.assertj.core.error.ShouldBeEqual.newAssertionError(ShouldBeEqual.java:81)
at org.assertj.core.internal.Failures.failure(Failures.java:76)
at org.assertj.core.internal.Objects.assertEqual(Objects.java:116)
at org.assertj.core.api.AbstractAssert.isEqualTo(AbstractAssert.java:74)
at examples.StackTraceFilterExample.main(StackTraceFilterExample.java:13)
We get this:
org.junit.ComparisonFailure: expected:<'[Ronaldo]'> but was:<'[Messi]'>
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at examples.StackTraceFilterExample.main(StackTraceFilterExample.java:20)
throwable
- the Throwable
to filter stack trace.public static java.lang.Throwable getRootCause(java.lang.Throwable throwable)
Throwable
.throwable
- the Throwable
to get root cause from.null
.public static java.lang.String getStackTrace(java.lang.Throwable throwable)
Throwable
as a String
.
The result of this method vary by JDK version as this method uses
Throwable.printStackTrace(java.io.PrintWriter)
. On JDK1.3 and earlier, the cause exception will not be
shown unless the specified throwable alters printStackTrace.
throwable
- the Throwable
to get stack trace from.String
.