我的应用程序中有很多这种类型的代码:
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] 删除。
我来说两句