1/*
2 * Written by Doug Lea with assistance from members of JCP JSR-166
3 * Expert Group and released to the public domain, as explained at
4 * http://creativecommons.org/publicdomain/zero/1.0/
5 */
6
7package java.util.concurrent;
8
9/**
10 * Exception thrown when attempting to retrieve the result of a task
11 * that aborted by throwing an exception. This exception can be
12 * inspected using the {@link #getCause()} method.
13 *
14 * @see Future
15 * @since 1.5
16 * @author Doug Lea
17 */
18public class ExecutionException extends Exception {
19    private static final long serialVersionUID = 7830266012832686185L;
20
21    /**
22     * Constructs an {@code ExecutionException} with no detail message.
23     * The cause is not initialized, and may subsequently be
24     * initialized by a call to {@link #initCause(Throwable) initCause}.
25     */
26    protected ExecutionException() { }
27
28    /**
29     * Constructs an {@code ExecutionException} with the specified detail
30     * message. The cause is not initialized, and may subsequently be
31     * initialized by a call to {@link #initCause(Throwable) initCause}.
32     *
33     * @param message the detail message
34     */
35    protected ExecutionException(String message) {
36        super(message);
37    }
38
39    /**
40     * Constructs an {@code ExecutionException} with the specified detail
41     * message and cause.
42     *
43     * @param  message the detail message
44     * @param  cause the cause (which is saved for later retrieval by the
45     *         {@link #getCause()} method)
46     */
47    public ExecutionException(String message, Throwable cause) {
48        super(message, cause);
49    }
50
51    /**
52     * Constructs an {@code ExecutionException} with the specified cause.
53     * The detail message is set to {@code (cause == null ? null :
54     * cause.toString())} (which typically contains the class and
55     * detail message of {@code cause}).
56     *
57     * @param  cause the cause (which is saved for later retrieval by the
58     *         {@link #getCause()} method)
59     */
60    public ExecutionException(Throwable cause) {
61        super(cause);
62    }
63}
64