class Test { | |
interface I<E extends Throwable> { | |
void foo() throws E; | |
} | |
static class Ex extends Exception {} | |
<E extends Throwable> void bar(I<E> s) throws E { | |
s.foo(); | |
} | |
void baz(I<Ex> s) throws Ex { | |
bar(() -> { | |
try { | |
s.foo(); | |
} catch (Throwable t) { | |
throw t; | |
} | |
}); | |
bar(() -> s.foo()); | |
} | |
} |