我见过几个这样的例子,但不幸的是没有一个方法抛出异常。
需要明确的是,我有一个通用方法,它接收另一种方法作为引用。
此方法在其方法签名上抛出异常,当此方法(示例中的 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);
}
}
最佳答案
您必须捕获returnFullName
可能引发的异常。它必须在您传递给 myGenericMethod
的 Function
的实现中捕获:
public static String calculateByName(String name) {
return myGenericMethod("John Doe", t -> {
try {
return returnFullName (t);
} catch (Exception e) {
return "fallback name";
}
});
}
使用 try-catch block 包装 myGenericMethod("John Doe", RemoteFileUtils::returnFullName);
调用没有帮助,因为 myGenericMethod
不是该方法这可能会引发异常。
关于java - 当引用的方法抛出异常时,如何以一个方法作为参数调用另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52627459/