Есть ли лучший способ регистрировать сбои в цепочке предложений 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")));