可调用的Java通用异常
有没有办法获得一个类,该类显式抛出(非运行时)异常,而只抛出主体抛出的(非运行时)异常 我知道如何在固定数量的例外情况下执行此操作,例如:可调用的Java通用异常,java,Java,有没有办法获得一个类,该类显式抛出(非运行时)异常,而只抛出主体抛出的(非运行时)异常 我知道如何在固定数量的例外情况下执行此操作,例如: public interface Throw1Callable<T, E extends Exception> { public T call() throws E; } 可调用的公共接口{ 公共T调用()抛出E; } 这样,在调用调用时,您不必处理异常,而只需处理RuntimeExceptions和E。但这根本无法扩展。如果我想为两
public interface Throw1Callable<T, E extends Exception> {
public T call() throws E;
}
可调用的公共接口{
公共T调用()抛出E;
}
这样,在调用调用时,您不必处理异常,而只需处理RuntimeExceptions和E。但这根本无法扩展。如果我想为两个例外做这件事,我需要为Throw2Callable等创建一个新类,Java(可能包括所有语言)不提供数量可变的泛型或任何可能有用的类型
有没有封装上述内容的好方法
编辑以澄清:假设A.A抛出IOException。我希望能够执行
((Throw1Callable)(->A.A()).call()
并只捕获IOException,而不是捕获异常<代码>((可调用)(->A.A()).call()将引发异常而不仅仅是IOException。这归结为某种“vararg”类型的参数,在Java中是不可能的
因此,您在这里可能只能使用ThrowXCallable
。我不认为“可伸缩性”在这里是一个大问题,您可能只需要Throw5Callable
Java本身采用这种方法—请参见
BiFunction
我不确定获取显式抛出(非运行时)异常的类是什么意思。你想创建一个可以抛出任何异常的方法吗?为了清晰起见,我添加了一些东西。我的意思是,如果主体抛出一些异常,比如IOException,.call应该只抛出IOException而不是exception。我希望有一个更好的解决方案可以解决这个问题,但你可能是对的。我可能永远只需要一次。