Top Description Fields Constructors Methods
org.aspectj.bridge

public Class AbortException

extends RuntimeException
Class Inheritance
Imports
java.io.PrintStream, .PrintWriter, java.util.ArrayList

Signal that a process was aborted before completion. This may contain a structured IMessage which indicates why the process was aborted (e.g., the underlying exception). For processes using try/catch to complete a method abruptly but complete the process normally (e.g., a test failure causes the test to abort but the reporting and testing continues normally), use the static methods to borrow and return a "porter" to avoid the expense of constructing a stack trace each time. A porter stack trace is invalid, and it should only be used to convey a message. E.g., to print the stack of the AbortException and any contained message:
catch (AbortException ae) {
    IMessage m = ae.getMessage();
    if (!ae.isPorter()) ae.printStackTrace(System.err);
    Throwable thrown = ae.getThrown();
    if (null != thrown) thrown.printStackTrace(System.err);
}
Authors
PARC, Andy Clement

Field Summary

Modifier and TypeField and Description
protected boolean
isPorter

true if this is a porter exception - only used to hold message

private boolean
protected IMessage
message

structured message abort

public static final String
NO_MESSAGE_TEXT

used when message text is null

private static final ArrayList<AbortException>
private static final long

Constructor Summary

AccessConstructor and Description
public
AbortException()

abort with default String message

public
AbortException(String s)

abort with message

public
AbortException(IMessage message)

abort with structured message

Method Summary

Modifier and TypeMethod and Description
public static AbortException
borrowPorter(IMessage message)

Get a porter exception from the pool.

private static String

Returns:

NO_MESSAGE_TEXT or message.getMessage() if not null
extractMessage
(IMessage message)

public IMessage

Returns:

IMessage structured message, if set
getIMessage
()

public String
getMessage()

Overrides java.lang.Throwable.getMessage.

Get message for this AbortException, either associated explicitly as message or implicitly as IMessage message or its thrown message.
public Throwable

Returns:

Throwable at bottom of IMessage chain, if any
getThrown
()

public boolean

Returns:

true if this exception is only to carry exception
isPorter
()

The stack trace of a porter is invalid; it is only used to carry a message (which may itself have a wrapped exception).

public boolean
public void
printStackTrace()

Overrides java.lang.Throwable.printStackTrace.

Prints this throwable and its backtrace to the standard error stream.
public void
printStackTrace(PrintStream
PrintStream to use for output
s
)

Overrides java.lang.Throwable.printStackTrace.

Print the stack trace of any enclosed thrown or this otherwise.
public void
printStackTrace(PrintWriter
PrintWriter to use for output
s
)

Overrides java.lang.Throwable.printStackTrace.

Print the stack trace of any enclosed thrown or this otherwise.
public static void
returnPorter(AbortException porter)

Return (or add) a porter exception to the pool.

private void
public void
setIsSilent(boolean isSilent)

Field Detail

isPorterback to summary
protected boolean isPorter

true if this is a porter exception - only used to hold message

isSilentback to summary
private boolean isSilent
messageback to summary
protected IMessage message

structured message abort

NO_MESSAGE_TEXTback to summary
public static final String NO_MESSAGE_TEXT

used when message text is null

portersback to summary
private static final ArrayList<AbortException> porters
serialVersionUIDback to summary
private static final long serialVersionUID

Hides java.lang.RuntimeException.serialVersionUID.

Constructor Detail

AbortExceptionback to summary
public AbortException()

abort with default String message

AbortExceptionback to summary
public AbortException(String s)

abort with message

AbortExceptionback to summary
public AbortException(IMessage message)

abort with structured message

Method Detail

borrowPorterback to summary
public static AbortException borrowPorter(IMessage message)

Get a porter exception from the pool. Porter exceptions do not have valid stack traces. They are used only to avoid generating stack traces when using throw/catch to abruptly complete but continue.

extractMessageback to summary
private static String extractMessage(IMessage message)
Returns:String

NO_MESSAGE_TEXT or message.getMessage() if not null

getIMessageback to summary
public IMessage getIMessage()
Returns:IMessage

IMessage structured message, if set

getMessageback to summary
public String getMessage()

Overrides java.lang.Throwable.getMessage.

Get message for this AbortException, either associated explicitly as message or implicitly as IMessage message or its thrown message.

Returns:String

Doc from java.lang.Throwable.getMessage.

the detail message string of this Throwable instance (which may be null).

See Also
java.lang.Throwable#getMessage()
getThrownback to summary
public Throwable getThrown()
Returns:Throwable

Throwable at bottom of IMessage chain, if any

isPorterback to summary
public boolean isPorter()

The stack trace of a porter is invalid; it is only used to carry a message (which may itself have a wrapped exception).

Returns:boolean

true if this exception is only to carry exception

isSilentback to summary
public boolean isSilent()
printStackTraceback to summary
public void printStackTrace()

Overrides java.lang.Throwable.printStackTrace.

Doc from java.lang.Throwable.printStackTrace.

Prints this throwable and its backtrace to the standard error stream. This method prints a stack trace for this Throwable object on the error output stream that is the value of the field System.err. The first line of output contains the result of the toString() method for this object. Remaining lines represent data previously recorded by the method fillInStackTrace(). The format of this information depends on the implementation, but the following example may be regarded as typical:

java.lang.NullPointerException
        at MyClass.mash(MyClass.java:9)
        at MyClass.crunch(MyClass.java:6)
        at MyClass.main(MyClass.java:3)
This example was produced by running the program:
class MyClass {
    public static void main(String[] args) {
        crunch(null);
    }
    static void crunch(int[] a) {
        mash(a);
    }
    static void mash(int[] b) {
        System.out.println(b[0]);
    }
}
The backtrace for a throwable with an initialized, non-null cause should generally include the backtrace for the cause. The format of this information depends on the implementation, but the following example may be regarded as typical:
HighLevelException: MidLevelException: LowLevelException
        at Junk.a(Junk.java:13)
        at Junk.main(Junk.java:4)
Caused by: MidLevelException: LowLevelException
        at Junk.c(Junk.java:23)
        at Junk.b(Junk.java:17)
        at Junk.a(Junk.java:11)
        ... 1 more
Caused by: LowLevelException
        at Junk.e(Junk.java:30)
        at Junk.d(Junk.java:27)
        at Junk.c(Junk.java:21)
        ... 3 more
Note the presence of lines containing the characters "...". These lines indicate that the remainder of the stack trace for this exception matches the indicated number of frames from the bottom of the stack trace of the exception that was caused by this exception (the "enclosing" exception). This shorthand can greatly reduce the length of the output in the common case where a wrapped exception is thrown from the same method as the "causative exception" is caught. The above example was produced by running the program:
public class Junk {
    public static void main(String args[]) {
        try {
            a();
        } catch(HighLevelException e) {
            e.printStackTrace();
        }
    }
    static void a() throws HighLevelException {
        try {
            b();
        } catch(MidLevelException e) {
            throw new HighLevelException(e);
        }
    }
    static void b() throws MidLevelException {
        c();
    }
    static void c() throws MidLevelException {
        try {
            d();
        } catch(LowLevelException e) {
            throw new MidLevelException(e);
        }
    }
    static void d() throws LowLevelException {
       e();
    }
    static void e() throws LowLevelException {
        throw new LowLevelException();
    }
}

class HighLevelException extends Exception {
    HighLevelException(Throwable cause) { super(cause); }
}

class MidLevelException extends Exception {
    MidLevelException(Throwable cause)  { super(cause); }
}

class LowLevelException extends Exception {
}
As of release 7, the platform supports the notion of suppressed exceptions (in conjunction with the try-with-resources statement). Any exceptions that were suppressed in order to deliver an exception are printed out beneath the stack trace. The format of this information depends on the implementation, but the following example may be regarded as typical:
Exception in thread "main" java.lang.Exception: Something happened
        at Foo.bar(Foo.java:10)
        at Foo.main(Foo.java:5)
        Suppressed: Resource$CloseFailException: Resource ID = 0
                at Resource.close(Resource.java:26)
                at Foo.bar(Foo.java:9)
                ... 1 more
Note that the "... n more" notation is used on suppressed exceptions just as it is used on causes. Unlike causes, suppressed exceptions are indented beyond their "containing exceptions."

An exception can have both a cause and one or more suppressed exceptions:

Exception in thread "main" java.lang.Exception: Main block
        at Foo3.main(Foo3.java:7)
        Suppressed: Resource$CloseFailException: Resource ID = 2
                at Resource.close(Resource.java:26)
                at Foo3.main(Foo3.java:5)
        Suppressed: Resource$CloseFailException: Resource ID = 1
                at Resource.close(Resource.java:26)
                at Foo3.main(Foo3.java:5)
Caused by: java.lang.Exception: I did it
        at Foo3.main(Foo3.java:8)
Likewise, a suppressed exception can have a cause:
Exception in thread "main" java.lang.Exception: Main block
        at Foo4.main(Foo4.java:6)
        Suppressed: Resource2$CloseFailException: Resource ID = 1
                at Resource2.close(Resource2.java:20)
                at Foo4.main(Foo4.java:5)
        Caused by: java.lang.Exception: Rats, you caught me
                at Resource2$CloseFailException.<init>(Resource2.java:45)
                ... 2 more
See Also
java.lang.Throwable#printStackTrace()
printStackTraceback to summary
public void printStackTrace(PrintStream s)

Overrides java.lang.Throwable.printStackTrace.

Print the stack trace of any enclosed thrown or this otherwise.

Parameters
s:PrintStream

Doc from java.lang.Throwable.printStackTrace.

PrintStream to use for output

See Also
java.lang.Throwable#printStackTrace(PrintStream)
printStackTraceback to summary
public void printStackTrace(PrintWriter s)

Overrides java.lang.Throwable.printStackTrace.

Print the stack trace of any enclosed thrown or this otherwise.

Parameters
s:PrintWriter

Doc from java.lang.Throwable.printStackTrace.

PrintWriter to use for output

See Also
java.lang.Throwable#printStackTrace(PrintWriter)
returnPorterback to summary
public static void returnPorter(AbortException porter)

Return (or add) a porter exception to the pool.

setIMessageback to summary
private void setIMessage(IMessage message)
setIsSilentback to summary
public void setIsSilent(boolean isSilent)