1 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file 2 // for details. All rights reserved. Use of this source code is governed by a 3 // BSD-style license that can be found in the LICENSE file. 4 package nestedtrycatches; 5 6 public class NestedTryCatches { 7 private static void throwException() { 8 throw new RuntimeException("IGNORED"); 9 } 10 11 private static void test() throws Throwable { 12 RuntimeException _primaryExc = null; 13 try { 14 throw new RuntimeException("PRIMARY"); 15 } catch (RuntimeException _t) { 16 _primaryExc = _t; 17 throw _t; 18 } finally { 19 // Keep the two calls to throwException() the same line 20 if(_primaryExc!=null) { 21 try { 22 throwException(); 23 } catch(Throwable _suppressed) { 24 } 25 } else { 26 throwException(); 27 } 28 } 29 } 30 31 public static void main(String[] args) throws Exception { 32 try { 33 test(); 34 } catch (Throwable e) { 35 System.out.println("EXCEPTION: " + e.getMessage()); 36 } 37 } 38 } 39