猿问

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

我见过几个这样的例子,但不幸的是没有一个方法抛出异常。


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


此方法在其方法签名上抛出异常,当此方法(示例中的 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);

         }

    }


汪汪一只猫
浏览 106回答 1
1回答

慕村9548890

您必须捕获可能引发的异常returnFullName。它必须在Function您传递给的实现中被捕获myGenericMethod:&nbsp; &nbsp; public static String calculateByName(String name) {&nbsp; &nbsp; &nbsp; &nbsp; return myGenericMethod("John Doe", t -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return returnFullName (t);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "fallback name";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; }myGenericMethod("John Doe", RemoteFileUtils::returnFullName);用 try-catch 块包装调用无济于事,因为myGenericMethod这不是可能引发异常的方法。
随时随地看视频慕课网APP

相关分类

Java
我要回答