我见过几个这样的例子,但不幸的是没有一个方法抛出异常。需要明确的是,我有一个通用方法可以接收另一种方法作为参考。此方法在其方法签名上抛出异常,当此方法(示例中的 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); } }
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
您必须捕获可能引发的异常returnFullName。它必须在Function您传递给的实现中被捕获myGenericMethod:
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);用 try-catch 块包装调用无济于事,因为myGenericMethod这不是可能引发异常的方法。
添加回答
举报
0/150
提交
取消