@@ -0,0 +1,895 @@
+package sfBugs;%0D%0A%0D%0Aimport java.lang.reflect.Method;%0D%0A%0D%0Apublic class Bug1912994 %7B%0D%0A%09public String foo() throws Exception %7B%0D%0A%09%09String s = null;%0D%0A%09%09try %7B%0D%0A%09%09%09Method m = this.getClass().getMethod(%22foo%22);%0D%0A%09%09%09m.invoke(this);%0D%0A%09%09%09char%5B%5D t = new char%5B0%5D;%0D%0A%09%09%09t%5B1%5D = 'a';%0D%0A%09%09%09s = %22foo%22;%0D%0A%09%09%09s += %22bar%22;%0D%0A%09%09%09// Thread.sleep(100);%0D%0A%09%09%09return s;%0D%0A%09%09%7D catch (Exception e) %7B // Should yield %22L D REC%22%0D%0A%09%09%09throw new Exception(e);%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A%09// If you comment out the following method, no %22L D REC%22 warning is%0D%0A%09// emitted for line 17%0D%0A%09public String foo2() throws Exception %7B%0D%0A%09%09String s = null;%0D%0A%09%09try %7B%0D%0A%09%09%09Method m = this.getClass().getMethod(%22foo2%22);%0D%0A%09%09%09m.invoke(this);%0D%0A%09%09%09char%5B%5D t = new char%5B0%5D;%0D%0A%09%09%09t%5B1%5D = 'a';%0D%0A%09%09%09s = %22foo%22;%0D%0A%09%09%09s += %22bar%22;%0D%0A%09%09%09// Thread.sleep(100);%0D%0A%09%09%09return s;%0D%0A%09%09%7D catch (RuntimeException re) %7B%0D%0A%09%09%09throw re;%0D%0A%09%09%7D catch (Exception e) %7B%0D%0A%09%09%09throw new Exception(e);%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%7D%0D%0A

Test case for [ 1912994 ] REC_CATCH_EXCEPTION broken with JDT in 3.3.1