我们试图遍历多个项目的管道并捕获异常,而不会中断较大的处理工作。
我们创建了一个通用模型来捕获返回的数据(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函数如何构造列表...任何帮助将不胜感激!请让我知道是否需要更多信息。