public class Throwable extends Object implements Serializable
Exception
) and
unrecoverable errors (Error
). This class provides common methods for
accessing a string message which provides extra information about the
circumstances in which the Throwable
was created (basically an error
message in most cases), and for saving a stack trace (that is, a record of
the call stack at a particular point in time) which can be printed later.
A Throwable
can also include a cause, which is a nested Throwable
that represents the original problem that led to this Throwable
. It is often used for wrapping various types of errors into a
common Throwable
without losing the detailed original error
information. When printing the stack trace, the trace of the cause is
included.
Error
,
Exception
,
RuntimeException
,
Serialized FormModifier | Constructor and Description |
---|---|
|
Throwable()
Constructs a new
Throwable that includes the current stack trace. |
|
Throwable(String detailMessage)
Constructs a new
Throwable with the current stack trace and the
specified detail message. |
|
Throwable(String detailMessage,
Throwable throwable)
Constructs a new
Throwable with the current stack trace, the
specified detail message and the specified cause. |
protected |
Throwable(String detailMessage,
Throwable throwable,
boolean enableSuppression)
Constructs a new
Throwable with the current stack trace, the
specified detail message and the specified cause. |
|
Throwable(Throwable throwable)
Constructs a new
Throwable with the current stack trace and the
specified cause. |
Modifier and Type | Method and Description |
---|---|
void |
addSuppressed(Throwable throwable)
Adds
throwable to the list of throwables suppressed by this. |
Throwable |
fillInStackTrace()
Records the stack trace from the point where this method has been called
to this
Throwable . |
Throwable |
getCause()
Returns the cause of this
Throwable , or null if there is
no cause. |
String |
getLocalizedMessage()
Returns the extra information message which was provided when this
Throwable was created. |
String |
getMessage()
Returns the extra information message which was provided when this
Throwable was created. |
StackTraceElement[] |
getStackTrace()
Returns the array of stack trace elements of this
Throwable . |
Throwable[] |
getSuppressed()
Returns the throwables suppressed by this.
|
Throwable |
initCause(Throwable throwable)
Initializes the cause of this
Throwable . |
void |
printStackTrace()
Writes a printable representation of this
Throwable 's stack trace
to the System.err stream. |
void |
printStackTrace(PrintStream err)
Writes a printable representation of this
Throwable 's stack trace
to the specified print stream. |
void |
printStackTrace(PrintWriter err)
Writes a printable representation of this
Throwable 's stack trace
to the specified print writer. |
void |
setStackTrace(StackTraceElement[] trace)
Sets the array of stack trace elements.
|
String |
toString()
Returns a string containing a concise, human-readable description of this
object.
|
public Throwable()
Throwable
that includes the current stack trace.public Throwable(String detailMessage)
Throwable
with the current stack trace and the
specified detail message.detailMessage
- the detail message for this Throwable
.public Throwable(String detailMessage, Throwable throwable)
Throwable
with the current stack trace, the
specified detail message and the specified cause.detailMessage
- the detail message for this Throwable
.throwable
- the cause of this Throwable
.public Throwable(Throwable throwable)
Throwable
with the current stack trace and the
specified cause.throwable
- the cause of this Throwable
.protected Throwable(String detailMessage, Throwable throwable, boolean enableSuppression)
Throwable
with the current stack trace, the
specified detail message and the specified cause.enableSuppression
- if false, throwables passed to addSuppressed(Throwable)
will be silently discarded.public Throwable fillInStackTrace()
Throwable
. This method is invoked by the Throwable
constructors.
This method is public so that code (such as an RPC system) which catches
a Throwable
and then re-throws it can replace the construction-time stack trace
with a stack trace from the location where the exception was re-thrown, by calling
fillInStackTrace
.
This method is non-final so that non-Java language implementations can disable VM stack traces for their language. Filling in the stack trace is relatively expensive. Overriding this method in the root of a language's exception hierarchy allows the language to avoid paying for something it doesn't need.
Throwable
instance.public String getMessage()
Throwable
was created. Returns null
if no message was
provided at creation time.Throwable
's detail message.public String getLocalizedMessage()
Throwable
was created. Returns null
if no message was
provided at creation time. Subclasses may override this method to return
localized text for the message. Android returns the regular detail message.Throwable
's localized detail message.public StackTraceElement[] getStackTrace()
Throwable
. Each
StackTraceElement
represents an entry in the call stack. The
element at position 0 is the top of the stack, that is, the stack frame
where this Throwable
is thrown.StackTraceElement
s representing
the call stack. Changes in the array obtained from this call will
not change the call stack stored in this Throwable
.printStackTrace()
public void setStackTrace(StackTraceElement[] trace)
StackTraceElement
represents an entry in the call stack. A copy of the specified array is
stored in this Throwable
. will be returned by getStackTrace()
and printed by printStackTrace()
.trace
- the new array of StackTraceElement
s. A copy of the
array is stored in this Throwable
, so subsequent
changes to trace
will not change the call stack stored
in this Throwable
.NullPointerException
- if any element in trace
is null
.printStackTrace()
public void printStackTrace()
Throwable
's stack trace
to the System.err
stream.public void printStackTrace(PrintStream err)
Throwable
's stack trace
to the specified print stream. If the Throwable
contains a
cause
, the method will be invoked recursively for
the nested Throwable
.err
- the stream to write the stack trace on.public void printStackTrace(PrintWriter err)
Throwable
's stack trace
to the specified print writer. If the Throwable
contains a
cause
, the method will be invoked recursively for the
nested Throwable
.err
- the writer to write the stack trace on.public String toString()
Object
getClass().getName() + '@' + Integer.toHexString(hashCode())
See Writing a useful
toString
method
if you intend implementing your own toString
method.
public Throwable initCause(Throwable throwable)
Throwable
. The cause can only be
initialized once.throwable
- the cause of this Throwable
.Throwable
instance.IllegalArgumentException
- if Throwable
is this object.IllegalStateException
- if the cause has already been initialized.public Throwable getCause()
Throwable
, or null
if there is
no cause.Throwable
's cause.public final void addSuppressed(Throwable throwable)
throwable
to the list of throwables suppressed by this. The
throwable will included when this exception's stack trace is printed.IllegalArgumentException
- if throwable == this
.NullPointerException
- if throwable == null
.public final Throwable[] getSuppressed()