当引用的方法引发异常时,如何以方法作为参数调用另一个方法?

时间:2018-10-03 12:51:39

标签: java exception

我已经看到了几个示例,但是不幸的是,没有一个方法抛出异常。

需要明确的是,我有一个通用方法可以接收另一种方法作为参考。

当此方法(示例中的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 个答案:

答案 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);并不是引发异常的方法。