流利的try-catch块

夸克:

我的应用程序中有很多这种类型的代码:

String authUserId = null;

try {
  authUserId = webTokenService.readUserIdFromToken(app.getMasterKey(), authToken);
} catch (Exception e) {
  // do nothing
}

对于每个片段,目标是在方法未抛出的情况下分配一个值,否则返回null。尽管上面的代码可以正常工作,但它看起来确实多余并且没有简化。

什么Java库可以使此代码更流畅?喜欢:

String authUserId = Try<String>.of(try -> {
   return webTokenService.readUserIdFromToken(app.getMasterKey(), authToken);
});

或更简单的东西。

更新:

使用Vavr库

<dependency>
  <groupId>io.vavr</groupId>
  <artifactId>vavr</artifactId>
  <version>0.10.3</version>
</dependency>

解决此问题:

String authUserId = Try.of(() -> webTokenService.readUserIdFromToken(app.getMasterKey(), authToken)).get();

旗:

如果您完全吞下异常,这并不是最佳实践Baeldung 有一篇很好的关于Exception的文章

以上称为吞咽异常。在大多数情况下,这样做对我们来说有点意思,因为它不能解决问题,并且也使其他代码也无法解决问题。

我发现了一个实现此行为但是,它已经有一段时间没有被维护了。因此,我宁愿推荐Vavr仍然有必要处理异常。Baeldung也提供了进一步的教程在文档中,有一个将两个数字相除的小例子:

int divide(int dividend, int divisor) {
    return dividend / divisor;
}

Try<Integer> divide(Integer dividend, Integer divisor) {
    return Try.of(() -> dividend / divisor);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章