是一种返回允许抛出Try的方法吗?

问题描述 投票:0回答:1

我们在项目中使用Vavr以简化异常处理。我总是确保返回Try的方法永远不会抛出任何东西,就像这样:

Try

但是我的一些同事会这样实现:

public Try<Result> someSafeMethod() {
  return Try.of(() -> someService.generateId())
           .map(someOtherService::getValueForId)
           .map(mappingService::mapToResult);
}

争论如果ID的生成有问题,他们宁愿引发异常,而不是返回的public Try<Result> someSafeMethod() { String generatedId = someService.generateId(); // <- Might throw an Exception that is not caught by the Try clause return Try.of(() -> someOtherService.getValueForId(generatedId)) .map(mappingService::mapToResult); } 失败。

该文档没有禁止返回Try的方法,但是它声明:

Try是一种Monadic容器类型,它表示可能导致异常,或者返回成功计算出的值的计算。

我太严格了吗?想象一下,您将使用一个API,其中所有方法都返回一个Try,当它们仍然抛出时,这还不错吗?

java exception api-design vavr
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.