GWT 2.7.0

com.google.gwt.core.shared
Class SerializableThrowable

java.lang.Object
  extended by java.lang.Throwable
      extended by com.google.gwt.core.shared.SerializableThrowable
All Implemented Interfaces:
java.io.Serializable

public final class SerializableThrowable
extends java.lang.Throwable

A serializable copy of a Throwable, including its causes and stack trace. It overrides #toString to mimic original Throwable.toString() so that Throwable.printStackTrace() will work as if it is coming from the original exception.

This class is especially useful for logging and testing as the emulated Throwable class does not serialize recursively and does not serialize the stack trace. This class, as an alternative, can be used to transfer the Throwable without losing any of these data, even if the underlying Throwable is not serializable.

Please note that, to get more useful stack traces from client side, this class needs to be used in conjunction with StackTraceDeobfuscator.

NOTE: Does not serialize suppressed exceptions to remain compatible with Java 6 and below.

See Also:
Serialized Form

Constructor Summary
SerializableThrowable(java.lang.String designatedType, java.lang.String message)
          Constructs a new SerializableThrowable with the specified detail message.
 
Method Summary
 java.lang.Throwable fillInStackTrace()
           
static SerializableThrowable fromThrowable(java.lang.Throwable throwable)
          Create a new SerializableThrowable from a provided throwable and its causes recursively.
 java.lang.String getDesignatedType()
          Returns the designated throwable's type name.
 java.lang.Throwable getOriginalThrowable()
          Returns the original throwable that this serializable throwable is derived from.
 java.lang.Throwable initCause(java.lang.Throwable cause)
          Initializes the cause of this throwable.
 boolean isExactDesignatedTypeKnown()
          Return true if provided type name is the exact type of the throwable that is designated by this instance.
 void setDesignatedType(java.lang.String typeName, boolean isExactType)
          Sets the designated Throwable's type name.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Throwable
getCause, getLocalizedMessage, getMessage, getStackTrace, printStackTrace, printStackTrace, printStackTrace, setStackTrace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SerializableThrowable

public SerializableThrowable(java.lang.String designatedType,
                             java.lang.String message)
Constructs a new SerializableThrowable with the specified detail message.

Method Detail

fromThrowable

public static SerializableThrowable fromThrowable(java.lang.Throwable throwable)
Create a new SerializableThrowable from a provided throwable and its causes recursively.

Returns:
a new SerializableThrowable or the passed object itself if it is null or already a SerializableThrowable.

fillInStackTrace

public java.lang.Throwable fillInStackTrace()
Overrides:
fillInStackTrace in class java.lang.Throwable

setDesignatedType

public void setDesignatedType(java.lang.String typeName,
                              boolean isExactType)
Sets the designated Throwable's type name.

Parameters:
typeName - the class name of the underlying designated throwable.
isExactType - false if provided type name is not the exact type.
See Also:
isExactDesignatedTypeKnown()

getDesignatedType

public java.lang.String getDesignatedType()
Returns the designated throwable's type name.

See Also:
isExactDesignatedTypeKnown()

isExactDesignatedTypeKnown

public boolean isExactDesignatedTypeKnown()
Return true if provided type name is the exact type of the throwable that is designated by this instance. This can return false if the class metadata is not available in the runtime. In that case getDesignatedType() will return the type resolved by best-effort and may not be the exact type; instead it can be one of the ancestors of the real type that this instance designates.


initCause

public java.lang.Throwable initCause(java.lang.Throwable cause)
Initializes the cause of this throwable.

This method will convert the cause to SerializableThrowable if it is not already.

Overrides:
initCause in class java.lang.Throwable

getOriginalThrowable

public java.lang.Throwable getOriginalThrowable()
Returns the original throwable that this serializable throwable is derived from. Note that the original throwable is kept in a transient field; that is; it will not be transferred to server side. In that case this method will return null.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Throwable

GWT 2.7.0