functional-reactive
Made in the European Union

Error handling with Result

Replace try/catch ladders with declarative Result chains.

May 15, 2026

The problem

You have a pipeline that parses a config value, looks up a record by id, and renders a label. Each step can fail — and the classic Java solution is a try/catch ladder or Optional.flatMap chains that silently swallow the reason for failure.

The Result way

Result<String> label = Result.ofNullable(System.getProperty("user.id"))
    .map(Integer::parseInt)
    .flatMap(repo::findById)
    .map(User::displayName);

label.ifPresentOrElse(
    System.out::println,
    err -> log.warn("could not render label: {}", err)
);

No exceptions escape, every failure carries a reason, and the happy path reads top-to-bottom.

Coming up

  • Composing multiple Results with thenCombine
  • Bridging legacy code with CheckedFunction