1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 6911256 6964740 4 * @author Joseph D. Darcy 5 * @summary Test exception analysis of ARM blocks 6 * @compile/fail/ref=TwrFlow.out -XDrawDiagnostics TwrFlow.java 7 */ 8 9 import java.io.IOException; 10 public class TwrFlow implements AutoCloseable { 11 public static void main(String... args) { 12 try(TwrFlow armflow = new TwrFlow()) { 13 System.out.println(armflow.toString()); 14 } catch (IOException ioe) { // Not reachable 15 throw new AssertionError("Shouldn't reach here", ioe); 16 } 17 // CustomCloseException should be caught or added to throws clause 18 19 // Also check behavior on a resource expression rather than a 20 // declaration. 21 TwrFlow armflowexpr = new TwrFlow(); 22 try(armflowexpr) { 23 System.out.println(armflowexpr.toString()); 24 } catch (IOException ioe) { // Not reachable 25 throw new AssertionError("Shouldn't reach here", ioe); 26 } 27 // CustomCloseException should be caught or added to throws clause 28 } 29 30 /* 31 * A close method, but the class is <em>not</em> Closeable or 32 * AutoCloseable. 33 */ 34 public void close() throws CustomCloseException { 35 throw new CustomCloseException(); 36 } 37 } 38 39 class CustomCloseException extends Exception {} | 1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 6911256 6964740 7013420 4 * @author Joseph D. Darcy 5 * @summary Test exception analysis of try-with-resources blocks 6 * @compile/fail/ref=TwrFlow.out -XDrawDiagnostics TwrFlow.java 7 */ 8 9 import java.io.IOException; 10 public class TwrFlow implements AutoCloseable { 11 public static void main(String... args) { 12 try(TwrFlow twrFlow = new TwrFlow()) { 13 System.out.println(twrFlow.toString()); 14 } catch (IOException ioe) { // Not reachable 15 throw new AssertionError("Shouldn't reach here", ioe); 16 } 17 // CustomCloseException should be caught or added to throws clause 18 } 19 20 /* 21 * A close method, but the class is <em>not</em> Closeable or 22 * AutoCloseable. 23 */ 24 public void close() throws CustomCloseException { 25 throw new CustomCloseException(); 26 } 27 } 28 29 class CustomCloseException extends Exception {} |