在一次上线的过程中,通过观察日志发现有java。lang。NullPointerException的异常出现: 异常堆栈 但这个空指针异常并不是我们的服务抛出的,显示的是下游服务抛出来的,但和下游服务的开发人员确认,他们最近没有发布过服务。 仔细观察日志发现:我们的服务在对下游服务发起RPC调用时,RPC框架在调用下游服务的client包时,执行了ListThriftCodec。write方法,而这个方法执行到boxedLongToLong方法时,抛出了java。lang。NullPointerException的异常。 观察到这,初步判断是:我们的服务在调用下游服务时,给一个Long类型的参数传了null到下游,导致RPC框架Long转Long的时候抛出了空指针异常。 然后仔细观察代码发现:我们对一个Long型参数没有做判空,把它写入到ArrayList中传给了下游,所以就出现了上面的异常。