151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/* 225fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it 651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as 751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * published by the Free Software Foundation. Oracle designates this 851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided 951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code. 1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT 1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that 1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accompanied this code). 1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * You should have received a copy of the GNU General Public License version 1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation, 1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any 2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * questions. 2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage java.lang; 2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/** 2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Thrown to indicate that an assertion has failed. 3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The seven one-argument public constructors provided by this 3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * class ensure that the assertion error returned by the invocation: 3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <pre> 3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * new AssertionError(<i>expression</i>) 3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </pre> 3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * has as its detail message the <i>string conversion</i> of 3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <i>expression</i> (as defined in section 15.18.1.1 of 3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>), 3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * regardless of the type of <i>expression</i>. 4051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic class AssertionError extends Error { 4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski private static final long serialVersionUID = -5013299493970297370L; 4551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with no detail message. 4851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 4951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError() { 5051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 5151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 5251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 5351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This internal constructor does no processing on its string argument, 5451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * even if it is a null reference. The public constructors will 5551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * never call this constructor with a null argument. 5651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 5751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski private AssertionError(String detailMessage) { 5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(detailMessage); 5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 6351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified object, which is converted to a string as 6451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * defined in section 15.18.1.1 of 6551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *<p> 6751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * If the specified object is an instance of {@code Throwable}, it 6851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * becomes the <i>cause</i> of the newly constructed assertion error. 6951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 7051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 7151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Throwable#getCause() 7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(Object detailMessage) { 7425fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski if (detailMessage instanceof Throwable) 7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski initCause((Throwable) detailMessage); 7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>boolean</code>, which is converted to 8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a string as defined in section 15.18.1.1 of 8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(boolean detailMessage) { 8825fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>char</code>, which is converted to a 9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * string as defined in section 15.18.1.1 of 9551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 9851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 9951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(char detailMessage) { 10025fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 10351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 10451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 10551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>int</code>, which is converted to a 10651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * string as defined in section 15.18.1.1 of 10751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 10851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 10951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 11051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 11151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(int detailMessage) { 11225fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 11351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 11451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 11551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 11651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 11751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>long</code>, which is converted to a 11851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * string as defined in section 15.18.1.1 of 11951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 12051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 12151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 12251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 12351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(long detailMessage) { 12425fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 12551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 12651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 12751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 12851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 12951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>float</code>, which is converted to a 13051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * string as defined in section 15.18.1.1 of 13151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 13251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 13351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 13451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 13551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(float detailMessage) { 13625fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 13751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 13851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 13951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs an AssertionError with its detail message derived 14151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from the specified <code>double</code>, which is converted to a 14251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * string as defined in section 15.18.1.1 of 14351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <cite>The Java™ Language Specification</cite>. 14451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 14551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param detailMessage value to be used in constructing detail message 14651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 14751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(double detailMessage) { 14825fbd653a83f3a22235eb61e6e34f46ef3e990b7Przemyslaw Szczepaniak this(String.valueOf(detailMessage)); 14951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 15051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 15151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 15251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Constructs a new {@code AssertionError} with the specified 15351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * detail message and cause. 15451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 15551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>Note that the detail message associated with 15651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * {@code cause} is <i>not</i> automatically incorporated in 15751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this error's detail message. 15851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 15951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param message the detail message, may be {@code null} 16051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param cause the cause, may be {@code null} 16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 16251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.7 16351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 16451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public AssertionError(String message, Throwable cause) { 16551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(message, cause); 16651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 16751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski} 168