安全地返回项目列表,而不会引发异常(但会记录异常)

时间:2019-06-17 10:55:04

标签: lambda functional-interface

我们试图遍历多个项目的管道并捕获异常,而不会中断较大的处理工作。

我们创建了一个通用模型来捕获返回的数据(Field,它具有多个属性),但是获取该数据的方法可能会引发异常。我们不希望这会停止管道,因为并不是所有存在的字段都以“成功”为前提,所以对于单个字段,我们实现了如下软异常处理程序:

//made up of some Fields and List<Field>s
TopLevelObject object = new TopLevelObject();

//the actual call - getData returns a type of Field
object.setField(Field.SoftExceptionHandler(() -> DataGetter.getData(rawData)));
public class Field {

    //variables, constructors, getters, setters

    public static SoftExceptionHandler(FieldFuncInterface ffi) {
        try {
            return ffi.op();
        } catch (Exception e) {
            return new Field(e);
        }
    }
}
@FunctionalInterface
public interface FieldFuncInterface {
    public Field op() throws GeometryException;
}

我们正在寻求做类似的事情,但是对于一种返回List<Field>类型的方法-我已经研究了其他各种答案,但是他们最关心的是lambda函数如何构造列表...任何帮助将不胜感激!请让我知道是否需要更多信息。

0 个答案:

没有答案