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

标签 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);
         }
    }

最佳答案

您必须捕获returnFullName可能引发的异常。它必须在您传递给 myGenericMethodFunction 的实现中捕获:

    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/

相关文章:

java - For 循环错误 -> if 语句不产生输出

java - 从模拟器内部正确安装 Android 应用程序

java - 如何展平 RDD<List>?

python - 在 Python 中检查成员是否存在

java - 使用泛型参数扩展的多级 Java 泛型继承

java - EhCache与Spring不缓存

exception - Spock - 使用数据表测试异常

java - 捕获多个Java异常时,如何在不写重复代码的情况下添加状态信息?

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

Python 简写异常处理