我知道Runnable
不会抛出Exception
,所以我尝试编写一个新接口,它接受可以抛出检查异常的方法:
界面:
interface MyInterface {
void run() throws Exception;
}
服务:
public void serviceMethod(MyInterface action) throws Exception {
// ...
action.run();
// ...
}
public void serviceMethod(Runnable action) { // for methods don't throw checked exception
// ...
action.run();
// ...
}
主要的:
public void myMethod() throws Exception {
service.serviceMethod(this::someMethodThatThrowsCheckedException);
service.serviceMethod(this::someMethodThatDoesNotThrowCheckedException);
}
这一切看起来都不错,但我不想myMethod()
抛出基类Exception
,我希望它抛出实际的异常类someMethodThatThrowsCheckedException
。例如如果
public void someMethodThatThrowsCheckedException throws IOException, ClassNotFoundException {//...}
然后我想myMethod()
扔IOException, ClassNotFoundException
,而不是Exception
。就像正常调用方法而不通过接口的情况一样:
public void myMethod() throws IOException, ClassNotFoundException {
someMethodThatThrowsCheckedException();
}
这可以以通用方式完成吗?
还有一个不会抛出的
用法:
一种用于投掷:
一无投掷:
希望对你有帮助