protected <T extends RuntimeException> T catches(Closure c, Class<T> rex) { T t = null; try { c.f(); } catch (RuntimeException ex) { ex.printStackTrace(); assertTrue( ex.getClass().getName() + " is not assignable to runtime exception " + rex.getName(), ex.getClass().isAssignableFrom(rex)); t = rex.cast(ex); } assertNotNull("No exception was caught of class " + rex.getName(), t); return t; }