class C { static class E extends Exception { } static class E1 extends E { } static class E2 extends E { } static class Err extends Error { } void m1() { try { throw new E1(); } catch (Exception e) { try { // throws Exception before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } catch (E2 e2) { } } } void m2() { try { throw new E1(); } catch (Exception e) { try { e = new E1(); // no effect before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } catch (E2 e2) { } } } void m3(boolean f) throws E1, E2 { try { if (f) throw new E1(); else throw new E2(); } catch (Exception e) { // throws Exception before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } } void m4(boolean f) throws E1, E2 { try { if (f) throw new E1(); else throw new E2(); } catch (Exception e) { e = new E2(); // no effect before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } } void m5(boolean f) throws E { try { if (f) throw new E1(); else if (!f) throw new E2(); else throw (Throwable)new E(); } catch (E1 e1) { } catch (final Exception e) { // throws Exception <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } catch (Throwable t) { } } void m6(boolean f) throws E2 { try { if (f) throw new E1(); else if (!f) throw new E2(); } catch (E1 e1) { } catch (final Exception e) { // throws Exception before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } } void m7() { try { throw new E1(); } catch (E e) { try { throw e; } catch (E x) { // no chained exception type evaluation <error descr="Unhandled exception: C.E">throw x;</error> } } } void m8() { try { throw new E1(); } catch (E e) { E x = e; // no chained exception type evaluation <error descr="Unhandled exception: C.E">throw x;</error> } } void m9_1() { try { System.out.println(); } catch (Throwable t) { // throws Throwable before JDK7 <error descr="Unhandled exception: java.lang.Throwable">throw t;</error> } } void m9_2() { try { System.out.println(); } catch (Error e) { throw e; } } void m9_3() { try { System.out.println(); } catch (Err e) { throw e; } } void m9_4() { try { if (false) throw new RuntimeException(); } catch (Exception e) { // throws Exception before JDK7 <error descr="Unhandled exception: java.lang.Exception">throw e;</error> } } }