微服务相关的空指针

来源: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!共同建造、维护这门课程,我需要每一个你!

2
0

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程