Class AssertFailure
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
org.apache.derby.shared.common.sanity.AssertFailure
- All Implemented Interfaces:
Serializable
AssertFailure is raised when an ASSERT check fails. Because assertions are
not used in production code, are never expected to fail, and recovering from
their failure is expected to be hard, they are under RuntimeException so that
no one needs to list them in their throws clauses. An AssertFailure at the
outermost system level will result in system shutdown.
An AssertFailure also contains a string representation of a full thread dump
for all the live threads at the moment it was thrown if the JVM supports it
and we have the right permissions.
If the JVM doesn't have the method Thread.getAllStackTraces i.e, we are on a
JVM < 1.5, or if we don't have the permissions java.lang.RuntimePermission
"getStackTrace" and "modifyThreadGroup", a message saying so is stored
instead.
The thread dump string is printed to System.err after the normal stack trace
when the error is thrown, and it is also directly available by getThreadDump().
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionThis constructor expects no arguments or nested error.AssertFailure
(String message) This constructor takes the just the message for this error.AssertFailure
(String message, Throwable nestedError) This constructor takes the pieces of information expected for each error. -
Method Summary
Modifier and TypeMethodDescriptionprivate String
Dumps stack traces for all the threads if the JVM supports it.Returns the thread dump stored in this AssertFailure as a string.void
Overrides printStackTrace() in java.lang.Throwable to include the thread dump after the normal stack trace.void
Overrides printStackTrace(PrintStream s) in java.lang.Throwable to include the thread dump after the normal stack trace.void
Overrides printStackTrace(PrintWriter s) in java.lang.Throwable to include the thread dump after the normal stack trace.private boolean
Tells if generating a thread dump is supported in the running JVM.Methods inherited from class java.lang.Throwable
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, setStackTrace, toString
-
Field Details
-
threadDump
-
-
Constructor Details
-
AssertFailure
This constructor takes the pieces of information expected for each error.- Parameters:
message
- the message associated with the error.nestedError
- errors can be nested together; if this error has another error associated with it, it is specified here. The 'outermost' error should be the most severe error; inner errors should be providing additional information about what went wrong.
-
AssertFailure
This constructor takes the just the message for this error.- Parameters:
message
- the message associated with the error.
-
AssertFailure
public AssertFailure()This constructor expects no arguments or nested error.
-
-
Method Details
-
getThreadDump
Returns the thread dump stored in this AssertFailure as a string.- Returns:
- - thread dump string.
-
printStackTrace
public void printStackTrace()Overrides printStackTrace() in java.lang.Throwable to include the thread dump after the normal stack trace.- Overrides:
printStackTrace
in classThrowable
-
printStackTrace
Overrides printStackTrace(PrintStream s) in java.lang.Throwable to include the thread dump after the normal stack trace.- Overrides:
printStackTrace
in classThrowable
-
printStackTrace
Overrides printStackTrace(PrintWriter s) in java.lang.Throwable to include the thread dump after the normal stack trace.- Overrides:
printStackTrace
in classThrowable
-
supportsThreadDump
private boolean supportsThreadDump()Tells if generating a thread dump is supported in the running JVM. -
dumpThreads
Dumps stack traces for all the threads if the JVM supports it. The result is returned as a string, ready to print. If the JVM doesn't have the method Thread.getAllStackTraces i.e, we are on a JVM < 1.5, or if we don't have the permissions: java.lang.RuntimePermission "getStackTrace" and "modifyThreadGroup", a message saying so is returned instead.- Returns:
- stack traces for all live threads as a string or an error message.
-