为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

汪汪一只猫 2021-10-27 09:59:45
我见过几个这样的例子,但不幸的是没有一个方法抛出异常。需要明确的是,我有一个通用方法可以接收另一种方法作为参考。此方法在其方法签名上抛出异常,当此方法(示例中的 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这不是可能引发异常的方法。


查看完整回答
反对 回复 2021-10-27
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信