// "Add exception to method signature" "true-preview" class C { interface ExceptionThrower2 { TException throwChainedException(Class exceptionClass, Throwable cause, String format, Object... argArr) throws TException; } public interface IExample { void foo(); } public static final class Example implements IExample { private final ExceptionThrower2 et; public Example(ExceptionThrower2 et) { this.et = et; } @Override public void foo() { try { _foo(); } catch (Exception e) { throw et.throwChainedException(Exception.class, e, "Error: [%s]", e.getMessage()); } } private void _foo() throws Exception { throw new Exception(); } } }