1/*
2 * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package java.lang;
27
28/**
29 * Thrown to indicate that an assertion has failed.
30 *
31 * <p>The seven one-argument public constructors provided by this
32 * class ensure that the assertion error returned by the invocation:
33 * <pre>
34 *     new AssertionError(<i>expression</i>)
35 * </pre>
36 * has as its detail message the <i>string conversion</i> of
37 * <i>expression</i> (as defined in section 15.18.1.1 of
38 * <cite>The Java&trade; Language Specification</cite>),
39 * regardless of the type of <i>expression</i>.
40 *
41 * @since   1.4
42 */
43public class AssertionError extends Error {
44    private static final long serialVersionUID = -5013299493970297370L;
45
46    /**
47     * Constructs an AssertionError with no detail message.
48     */
49    public AssertionError() {
50    }
51
52    /**
53     * This internal constructor does no processing on its string argument,
54     * even if it is a null reference.  The public constructors will
55     * never call this constructor with a null argument.
56     */
57    private AssertionError(String detailMessage) {
58        super(detailMessage);
59    }
60
61    /**
62     * Constructs an AssertionError with its detail message derived
63     * from the specified object, which is converted to a string as
64     * defined in section 15.18.1.1 of
65     * <cite>The Java&trade; Language Specification</cite>.
66     *<p>
67     * If the specified object is an instance of {@code Throwable}, it
68     * becomes the <i>cause</i> of the newly constructed assertion error.
69     *
70     * @param detailMessage value to be used in constructing detail message
71     * @see   Throwable#getCause()
72     */
73    public AssertionError(Object detailMessage) {
74        this(String.valueOf(detailMessage));
75        if (detailMessage instanceof Throwable)
76            initCause((Throwable) detailMessage);
77    }
78
79    /**
80     * Constructs an AssertionError with its detail message derived
81     * from the specified <code>boolean</code>, which is converted to
82     * a string as defined in section 15.18.1.1 of
83     * <cite>The Java&trade; Language Specification</cite>.
84     *
85     * @param detailMessage value to be used in constructing detail message
86     */
87    public AssertionError(boolean detailMessage) {
88        this(String.valueOf(detailMessage));
89    }
90
91    /**
92     * Constructs an AssertionError with its detail message derived
93     * from the specified <code>char</code>, which is converted to a
94     * string as defined in section 15.18.1.1 of
95     * <cite>The Java&trade; Language Specification</cite>.
96     *
97     * @param detailMessage value to be used in constructing detail message
98     */
99    public AssertionError(char detailMessage) {
100        this(String.valueOf(detailMessage));
101    }
102
103    /**
104     * Constructs an AssertionError with its detail message derived
105     * from the specified <code>int</code>, which is converted to a
106     * string as defined in section 15.18.1.1 of
107     * <cite>The Java&trade; Language Specification</cite>.
108     *
109     * @param detailMessage value to be used in constructing detail message
110     */
111    public AssertionError(int detailMessage) {
112        this(String.valueOf(detailMessage));
113    }
114
115    /**
116     * Constructs an AssertionError with its detail message derived
117     * from the specified <code>long</code>, which is converted to a
118     * string as defined in section 15.18.1.1 of
119     * <cite>The Java&trade; Language Specification</cite>.
120     *
121     * @param detailMessage value to be used in constructing detail message
122     */
123    public AssertionError(long detailMessage) {
124        this(String.valueOf(detailMessage));
125    }
126
127    /**
128     * Constructs an AssertionError with its detail message derived
129     * from the specified <code>float</code>, which is converted to a
130     * string as defined in section 15.18.1.1 of
131     * <cite>The Java&trade; Language Specification</cite>.
132     *
133     * @param detailMessage value to be used in constructing detail message
134     */
135    public AssertionError(float detailMessage) {
136        this(String.valueOf(detailMessage));
137    }
138
139    /**
140     * Constructs an AssertionError with its detail message derived
141     * from the specified <code>double</code>, which is converted to a
142     * string as defined in section 15.18.1.1 of
143     * <cite>The Java&trade; Language Specification</cite>.
144     *
145     * @param detailMessage value to be used in constructing detail message
146     */
147    public AssertionError(double detailMessage) {
148        this(String.valueOf(detailMessage));
149    }
150
151    /**
152     * Constructs a new {@code AssertionError} with the specified
153     * detail message and cause.
154     *
155     * <p>Note that the detail message associated with
156     * {@code cause} is <i>not</i> automatically incorporated in
157     * this error's detail message.
158     *
159     * @param  message the detail message, may be {@code null}
160     * @param  cause the cause, may be {@code null}
161     *
162     * @since 1.7
163     */
164    public AssertionError(String message, Throwable cause) {
165        super(message, cause);
166    }
167}
168