具体报错信息如下:
webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[null]: com.ibm.ws.webcontainer.webapp.WebAppErrorReport:
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendError(WebAppDispatcherContext.java:624)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendError(SRTServletResponse.java:1071)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
谁能看明白这个错误信息的含义?反正我是被坑了,网上也找不到答案。
现在我知道是什么原因了,让我来总结一下:
第一,有个关键信息是WebApp,说明它是应用端自身的一个error
第二,报错的地方不明确,websphere上调试也极为不方便(太耗时间了),通过打印日志的方式,定位到了错误所在的行。
(不过很是蹊跷,那一行既然报错了,但是为什么没有被外层的try-catch捕获呢?,而且那一行看起来没有问题啊!)
哦,我好想明白了,是try-catch捕获的力度不够,错误的等级比Exception还要高,也就是说要用Throwable错误,赶紧试试看!
没错,事实证明了,是个Throwable类型的错误,因为我改动了接口类而没有更新class文件,导致暴出了一个Throwable类型的错误!
这真的是被坑惨了…………总结经验:
1、有些地方要用Throwable来捕捉错误。(看具体的情况,是否引用了接口,但是又找不到实现类?)
2、日志记录要全面,便于定位问题。为了避免每次都要修改代码,可以事先设置较全面的日志,上线时关闭,调试时可打开(开关放在数据库中)。