1 /*
2  * Copyright (c) 2008, 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 
26 package java.lang;
27 
28 /**
29  * Thrown to indicate that an {@code invokedynamic} instruction has
30  * failed to find its bootstrap method,
31  * or the bootstrap method has failed to provide a
32  * {@linkplain java.lang.invoke.CallSite call site} with a {@linkplain java.lang.invoke.CallSite#getTarget target}
33  * of the correct {@linkplain java.lang.invoke.MethodHandle#type method type}.
34  *
35  * @author John Rose, JSR 292 EG
36  * @since 1.7
37  */
38 public class BootstrapMethodError extends LinkageError {
39     private static final long serialVersionUID = 292L;
40 
41     /**
42      * Constructs a {@code BootstrapMethodError} with no detail message.
43      */
BootstrapMethodError()44     public BootstrapMethodError() {
45         super();
46     }
47 
48     /**
49      * Constructs a {@code BootstrapMethodError} with the specified
50      * detail message.
51      *
52      * @param s the detail message.
53      */
BootstrapMethodError(String s)54     public BootstrapMethodError(String s) {
55         super(s);
56     }
57 
58     /**
59      * Constructs a {@code BootstrapMethodError} with the specified
60      * detail message and cause.
61      *
62      * @param s the detail message.
63      * @param cause the cause, may be {@code null}.
64      */
BootstrapMethodError(String s, Throwable cause)65     public BootstrapMethodError(String s, Throwable cause) {
66         super(s, cause);
67     }
68 
69     /**
70      * Constructs a {@code BootstrapMethodError} with the specified
71      * cause.
72      *
73      * @param cause the cause, may be {@code null}.
74      */
BootstrapMethodError(Throwable cause)75     public BootstrapMethodError(Throwable cause) {
76         // cf. Throwable(Throwable cause) constructor.
77         super(cause == null ? null : cause.toString());
78         initCause(cause);
79     }
80 }
81