Есть ли лучший способ регистрировать сбои в цепочке предложений Java Vavr Try?

Я пытаюсь войти на каждом этапе сбоя, и, насколько я могу судить, мне нужно вложить попытку и войти в плоскую карту.

Try.of(() -> true).
    onFailure(h -> System.out.println("first onFailure")).
    flatMap(i -> Try.of(() -> { throw new RuntimeException(); }).
                     onFailure(j -> System.out.println("second onFailure"))).
    flatMap(k -> Try.of(() -> true).
                     onFailure(l -> System.out.println("third onFailure")));

Есть ли более простой способ сделать это, чем выше? Есть ли в библиотеке функция, которую я могу использовать для замены вложенной Try.of()s?

2 ответа

Если вы хотите просто регистрировать ошибки, вы можете сделать это один раз:

Try.of(() -> method1())
        .mapTry(i -> method2())
        .mapTry(k -> method3())
        .onFailure(throwable -> log.error("Something wrong", throwable));

Почему ты вкладываешь onFailure звонки? Как насчет этого синтаксиса?

Try.of(() -> true)
        .onFailure(h -> System.out.println("first onFailure"))
        .flatMap(i -> Try.of(() -> { throw new RuntimeException(); }))
        .onFailure(j -> System.out.println("second onFailure"))
        .flatMap(k -> Try.of(() -> true)
        .onFailure(l -> System.out.println("third onFailure")));
Другие вопросы по тегам