在做项目进行订单查询时时出现异常情况:
(1)订单页面显示为空:
(2)后台查找不出错误信息:
Connected to server
[2020-08-16 04:00:10,972] Artifact myCashier:war exploded: Artifact is being deployed, please wait...
16-Aug-2020 16:00:11.427 璀﹀憡 [RMI TCP Connection(2)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 鏈煡鐗堟湰瀛楃涓� [4.0]銆傚皢浣跨敤榛樿鐗堟湰銆�
16-Aug-2020 16:00:12.236 淇℃伅 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 鑷冲皯鏈変竴涓狫AR琚壂鎻忕敤浜嶵LD浣嗗皻鏈寘鍚玊LD銆� 涓烘璁板綍鍣ㄥ惎鐢ㄨ皟璇曟棩蹇楄褰曪紝浠ヨ幏鍙栧凡鎵弿浣嗘湭鍦ㄥ叾涓壘鍒癟LD鐨勫畬鏁碕AR鍒楄〃銆� 鍦ㄦ壂鎻忔湡闂磋烦杩囦笉闇�瑕佺殑JAR鍙互缂╃煭鍚姩鏃堕棿鍜孞SP缂栬瘧鏃堕棿銆�
16-Aug-2020 16:00:12.587 璀﹀憡 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [312] milliseconds.
[2020-08-16 04:00:12,634] Artifact myCashier:war exploded: Artifact is deployed successfully
[2020-08-16 04:00:12,634] Artifact myCashier:war exploded: Deploy took 1,663 milliseconds
16-Aug-2020 16:00:20.586 淇℃伅 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 鎶妛eb 搴旂敤绋嬪簭閮ㄧ讲鍒扮洰褰� [G:\_1bitJava\apache-tomcat-8.5.47\webapps\manager]
16-Aug-2020 16:00:20.674 淇℃伅 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [G:\_1bitJava\apache-tomcat-8.5.47\webapps\manager] has finished in [88] ms
(3)前端页面不显示内容,且浏览器控制台访问正常:
我们在上图中找到浏览订单的servlet请求orderbrowse:
点击右键open in new tab
,发现其实是有内容返回的,不过只有部分信息,那么可能就是解析过程出问题了。
我们程序中的将字符串解析到前端的过程如下:
//将list转换为json字符串,并将该字符串写到流当中
objectMapper.writeValue(writer,orders);
//推到前端
writer.write(writer.toString());
既然我们直到解析过程出错了,但是我们并不知道错在哪,为了捕获错误,我们使用try catcy进行捕获。
try {
//将list转换为json字符串,并将该字符串写到流当中
objectMapper.writeValue(writer,orders);
//推到前端
writer.write(writer.toString());
}catch (Exception e) {
e.printStackTrace();
}
再次运行后,捕获到的异常信息如下:
com.fasterxml.jackson.databind.JsonMappingException:
(was java.lang.NullPointerException)
(through reference chain:
java.util.ArrayList[0]->entity.Order["actual_amount"])
Caused by: java.lang.NullPointerException
at entity.Order.getActual_amount(Order.java:37)
根据异常信息,我们得知order的实际金额actual_amount
存在空指针异常,也就是我们在写入订单信息时,没有写入订单的实际金额actual_amount
。
经检查订单的实际金额是缺省的:
补充订单的实际金额:
错误修复,订单浏览页显示正常:
注意:
当不知道错误在哪时,注意观察前端信息,并要学会用try catch捕捉错误信息,尤其是有I/O的地方。