请问这段代码,哪里有问题。为什么还是报空指针错误

图片说明
根据网上的说法,将发送消息的代码提取出来形成一个新方法。在此方法中调用添加商品(saveItem)方法,然后执行发送消息。报错没变还是空指针错误

如果想先提交事务再发送消息,那么就将发送消息的代码提取到含有事务的业务逻辑代码之外,也就是说你不要将发送消息的代码放在saveAndsendmsg方法中,也不要放在saveAndsendmsg方法所在的类中,这个类就是含有事务的类

(1)下断点或者看错误信息(异常发生的源代码文件和行数,调用堆栈丢出Null异常的函数名),确定哪一行有null,别你看了半天,根本找不到地方。
(2)找到了行,无非就是那么几个变量,一个一个试也能找到。

哪一行报错,在对应的一行加上非空判断,比如我猜测是你的item是空的,同样debug调试,断点就打在if判断上

if(item != null){
    final long id= item.getId();
}