可调用的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。我希望有一个更好的解决方案可以解决这个问题,但你可能是对的。我可能永远只需要一次。