【
事情起因】 最近在看《Java编程思想》第4版,昨天看到异常处理那章时,就想到了J2EE项目中异常的处理,J2EE的项目光在后台打印出异常还是不够的,需要以一种友好的方式提示给用户。
【事情经过】 于是我就看了之前在公司做的项目,这才发现,在struts里,我们都是
try{
xxxxxxxxxx
}catch(BunisessException e){
throw new BunisessException("xxXXXXX,请确认后重试");
}
就是自己将我们自定义的异常抛出去,却重来没有管他如何在页面上展示。我运行起项目,当故意进行错误操 作时,后台我throw Exception的信息,总能以很友好的对话框显示出来。仔细查看没个页面,却没有任何的异 常的提示信息。
【思考】那么异常信息时如何弹出来的?
我直觉告诉我,肯定有一个公共的页面用来进行错误提示。带着这个问题,我看了项目中所有的公共页面的代码。
直到发现一个ErrorAler.jsp的页面。这个页面比较简单,在页面上写了一段JAVA代码,调用了后的一个类的静态
方法,我跟踪进去,查看该类,发现他继承了一个来自acegi的类,并实现了一个借口springFramework.security
的一个借口。
处理代码很短,但是涉及到其他几个类,大致的意思是:获取到异常堆栈,最后抛出的那个异常,然后getMessage()
然后放置到session中。
这个页面最后会以window.open()的方式打开,看起来就会像一个alert框。
他的实现原理和机制,我还是没懂。由于我家没网,所以不能把代码发上来供大家一起研究。高手能不能大致讲讲这种处理机制?
我所知��的异常处理好像主要有以下几种办法:
1.web.xml里面有个error-page
2.用struts 有个 globel-exception
3.在后台catch 语句块 用request派发到页面,在页面上show
【写在后面】 我会继续去研究,等研究透了,会和大家一起分享的!