有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从lambda中获取变量?

我有一个在文件中查找动物物种的方法,我希望它在数据库中不存在物种时抛出一个错误

public void printAnimalFromNames(String... s){
        try (Stream<String> stream = Arrays.stream(s)) {
            stream.forEach(x -> printAnimalPage(AnimalInfo.get(findSpecie(x))));
        } catch (Exception e){
            System.out.println("this spiece don't seem to exist");
        }
    }

在我的catch部分,我想在错误解释中加入x变量,比如

[...]
catch (Exception e){
            System.out.println("this spiece "+x+" don't seem to exist");
        }

我该怎么办


共 (1) 个答案

  1. # 1 楼答案

    您必须将try-catch移动到lambda的主体内,因为lambda参数x在这个范围内:

    public void printAnimalFromNames(String... s) {
        try (Stream<String> stream = Arrays.stream(s)) {
            stream.forEach(x -> {
                try {
                    printAnimalPage(AnimalInfo.get(findSpecie(x)));
                } catch (Exception e) {
                    System.out.println("this specie " + x + " don't seem to exist");
                }
            });
        }
    }