看到很多文章都说把异常抛给Struts2处理,不用try了,但是如果我有一些已知可能发生的异常并能写代码处理的,为什么要抛给Struts2?
例如,有NullPointerException,我可以判断一下变量是否为null,再进行相应处理,就不会发生异常。
如果要获取某url的数据,如果url无法连接这种异常如果写代码处理返回一个友好的结果让前端js处理并提示,用户继续使用而不中断。
但用到Struts2处理异常就得返回一个错误的页面,体验不好,那它的意义是什么?还是说,我可以处理的异常要自己异常,未知的异常交给struts2处理,那还不是有很多try catch吗?
------解决思路----------------------
第一点 如果你不需要前台看到后台的堆栈信息,可以配置error-page,类似个404的页面,提示系统异常,第二点 一般在后台尽量对异常进行捕获,避免后台错误。 对于多层次调用的时候可以将运行期异常抛出来,交给调用者处理,调用者此时要选择try catch进行处理,也可以不处理被调用的方法抛出的异常。
------解决思路----------------------
struts2的异常处理是为了尽量在后台将异常进行捕获,还有的用途是为了将常见的异常转化为自定义的异常,好进行项目的统一管理。