Thu, 10 Oct 2013 14:58:04 +0200
8001931: The new build system whitespace cleanup
Reviewed-by: tbell, simonis, erikj
1 /*
2 * Copyright (c) 2010, 2013, 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
24 /*
25 * @test
26 * @bug 8013163
27 * @author sogoel
28 * @summary Child exception can be caught in a parents catch block but not sibling exceptions.
29 * @run main Pos12
30 */
32 /*
33 * For this test:
34 * RuntimeException
35 * |
36 * A
37 * / \
38 * Ab Ac
39 * This test throws an Ab and catches it as an A(parent).
40 * The exception, although catch as an A, is rethrown and eventually
41 * caught as an Ab. Before that it is NOT caught as an Ac.
42 */
44 public class Pos12 {
46 public static void main(String... args) {
47 try {
48 new Pos12().test();
49 } catch (A exception) {
50 try {
51 try {
52 throw exception; // used to throw A, now throws Ab
53 } catch (Ac cException) { // This should NOT catch sibling exception Ab
54 throw new RuntimeException("FAIL: Should not be caught in catch Ac");
55 }
56 } catch (Ab | Ac bcException) {
57 if (bcException instanceof Ac) {
58 throw new RuntimeException("FAIL: Sibling exception Ab not caught as expected");
59 } else if (bcException instanceof Ab) {
60 System.out.println("PASS");
61 }
62 }
63 }
64 }
66 public void test() { throw new Ab(); }
68 static class A extends RuntimeException {}
70 // Test class
71 static class Ab extends A {}
73 // Test class
74 static class Ac extends A {}
75 }