微服务相关的空指针
来源:2-1 如何从根源避免空指针
慕神3049327
2020-09-03
公司使用微服务,服务直接相互调用,不论经验是否丰富,发现或多或少都会存在NPE问题。最后强制要求,调用方和被调用方都要判空,其实最后难免有疏忽,而且有些判空其实没有必要,导致很多简单的代码,判空代码要多余业务代码,后来对于前端或者服务调用的api中的参数可以使用validation来解决。
我想问老师,对于service层的判空,除了简单的大段的if,有什么其他办法可以简化判空的代码量吗?
写回答
1回答
-
张勤一
2020-09-03
同学你好:
首先,可以肯定的说,在业务代码中判空的逻辑是几乎不可避免的。即使你使用了注解或者是断言的方式,及时抛出异常,道理也是一样的,也是会对我们业务相关的代码造成了“污染“(因为判空并不属于业务的功能)。
其实,除了简单的 if else 的判断,Java8 提供了更好的方式,也就是在接下来的小节里面我所讲解的 Optional,你可以提供默认值、构造器等等,当然,也可以选择向外直接抛出异常。总结下来,对于 NPE 问题,现在的解决方案主要是两类:
1. if else 的方式,这不会有什么问题,只是代码不太好看,稍显啰嗦
2. 使用 Optional 类型(可以继续看后续的课程)
我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!
20
相似问题