我已经看到了几个示例,但是不幸的是,没有一个方法抛出异常。
需要明确的是,我有一个通用方法可以接收另一种方法作为参考。
当此方法(示例中的returnFullName)没有引发异常时,此方法在其方法的签名上引发异常,编译器没有问题,但是在编译器抱怨“ 未处理的异常” 。
我仍然不知道如何解决这个问题,是否有任何想法在这种情况下处理异常?
public class MyClass{
private static String returnFullName(String name) throws Exception{
return "full name " + name;
}
public static String calculateByName(String name) {
try {
myGenericMethod("John Doe", RemoteFileUtils::returnFullName);
} catch (Exception e) {
return "fallback name";
}
}
private static <T> T myGenericMethod(final String name, final Function<String, T> call) {
//do stuff
return call.apply(name);
}
}
答案 0 :(得分:1)
您必须捕获returnFullName
可能引发的异常。必须将其传递给Function
的{{1}}的实现中:
myGenericMethod
用try-catch块包装 public static String calculateByName(String name) {
return myGenericMethod("John Doe", t -> {
try {
return returnFullName (t);
} catch (Exception e) {
return "fallback name";
}
});
}
调用无济于事,因为myGenericMethod("John Doe", RemoteFileUtils::returnFullName);
并不是引发异常的方法。