繁体   English   中英

可调用的Java通用异常

[英]Java generic exceptions for callable

是否有任何方法可以获取一个类,该类显式地抛出主体抛出的(非运行时)异常?

我知道如何使用固定数量的异常来执行此操作,例如:

public interface Throw1Callable<T, E extends Exception> {
    public T call() throws E;
}

这样,在调用调用时,您不必处理Exception,而只需要处理RuntimeExceptions和E。但这根本无法扩展。 如果我想针对两个异常执行此操作,则需要为Throw2Callable等创建一个新类。Java(可能包括所有语言)不提供可变数量的泛型或任何可能有用的类。

是否有封装上述内容的好方法?

编辑以澄清问题:假设Aa抛出IOException。 我想能够做((Throw1Callable)() -> Aa()).call()并只捕获IOException而不是捕获Exception。 ((Callable)() -> Aa()).call()将引发Exception而不是IOException。

归结为Java中无法实现的某种“ vararg”类型参数。

因此, ThrowXCallable可能是您在这里可以做的最好的事情。 我认为“可伸缩性”在这里不是一个大问题,您可能只需要Throw5Callable

Java本身采用这种方法-请参见BiFunction

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM