如何在操作 returns 可选方法的 lambda 中抛出异常

How to throw an exception in lambdas operating on methods which returns optional

我写了一些 lambda 表达式,它根据 return 可选的方法向地图添加了一些值。当键“A”下没有值时,我想抛出一些特定的异常。我正在使用 contains 检查地图但它看起来很糟糕:|我尝试使用 orElseThrow 但没有很好的结果。

有什么提示吗?

下面是一些示例代码:

package com.aa;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import com.aa.SomeExpection;

public class SomeCLass
{
    Optional<String> methodA()
    {
        return Optional.empty();
    }

    Optional<String> methodB() {
        return Optional.of("example");
    }

    Map methodC() throws SomeExpection {
        Map<String, String> map = new HashMap<>(2);
        methodA().flatMap(s -> {
            map.put("A", s);
            return methodB();
        }).ifPresent(s -> map.put("B", s));


        if (map.containsKey("A")) {
            return map;
        }
        throw new SomeExpection();
    }
}

这是等价的

Map methodC() throws SomeException {
    Map<String, String> map = new HashMap<>(2);
    map.put("A", methodA().orElseThrow(SomeException::new));
    methodB().ifPresent(s -> map.put("B", s));
    return map;
}

是的,你可以使用 orElseThrow,像这样:

map.put("A", methodA().orElseThrow(() -> new SomeExpection()));