Безопасный возврат списка элементов без исключения (но при его регистрации) - PullRequest
0 голосов
/ 17 июня 2019

Мы пытаемся запустить конвейер из нескольких элементов и перехватывать исключения, не прерывая большую обработку.

Мы создали обобщенную модель для сбора возвращенных данных (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> - я просмотрел различные другие ответы, но их больше всего интересует, как лямбда-функции могут создавать списки ... любая помощь будет с благодарностью! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

...