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

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

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 ]

0 голосов
/ 28 августа 2018

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

Try.of(() -> method1())
        .mapTry(i -> method2())
        .mapTry(k -> method3())
        .onFailure(throwable -> log.error("Something wrong", throwable));
0 голосов
/ 28 августа 2018

Почему вы вкладываете 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")));
...