关于web应用异常处理的一点体会
***本文纯粹是对web应用的个人理解,由于水平有限,可能说得并不对或者不全对***
一、web应用工作流程简介:
1. web服务器(Tomcat)接收到客户端的请求(HTTP Request);
2. Tomcat从request中获取URI并根据URI匹配进行相应处理:
(1)*.do:调用ActionServlet处理相关业务逻辑;
(2)其他:根据URI查找相应资源;
3. 生成状态代码(HTTP Status Code)并连同处理结果一起以响应的方式(HTTP Response)返给客户端浏览器。
二、web应用中的异常分类:
web应用中的异常以我个人理解的方式去分类的话,我将它分为三大类,分别是:在应用程序中产生的异常、视图层JSP页中产生的异常和最后在Tomcat中处理的异常。
1. 在应用程序中产生的异常
在应用程序中产生的异常包括在DAO层、Service层、Action控制层中产生的异常。DAO层、Service层中产生的异常如果可恢复,应尽量尝试恢复它的动作,如果确实无法恢复就应先作必要的清理工作,如关闭数据库连接,然后向上抛出UncheckedException,一直抛到Action控制层;同样,在Action控制层的异常如果可恢复,应尽量尝试恢复它的动作,如果无法恢复,就应捕捉并作相应处理,比如,将原始异常信息封装,并以用户可以理解的语言提示用户,同时将异常信息写入日志以供程序维护人员查错之用。如果不捕捉,异常就会被抛出到web服务器,服务器会根据web.xml中的<error-page>设置转向相应的页面,如果没有设置<error-page>,则由服务器生成错误员返给客户端浏览器。
2. 视图层JSP页中产生的异常
如果产生异常的JSP页设置了errorPage属性,则发生JSP异常后会立即跳到errorPage属性中指定的错误页面,这个错误页面中必须设置属性isErrorPage="true";如果产生异常的JSP页没有设置errorPage属性,则异常同样会被抛出到web服务器,服务器根据web.xml中的<error-page>设置转向相应的页面,如果没有设置<error-page>,则由服务器生成错误员返给客户端浏览器。
3. 在Tomcat中处理的异常
web应用中一切异常最后都会被抛出到web服务器(如果中途没有捕捉的话),然后由服务器统一处理。除了上面提到的两种异常外,还有一些是在web服务器中产生的异常,比如:我们常见的404 - Not Found等。
三、web应用异常处理经验:
1. 对于下层的应用程序异常,如果可恢复,应尽量尝试恢复它的动作,如果确实无法恢复就应先作必要的清理工作,如关闭数据库连接,然后向上抛出UncheckedException,最后在Action控制层捕捉并处理:将原始异常信息封装,并以用户可以理解的语言提示用户,同时将异常信息写入日志以供程序维护人员查错之用;
2. 对于视图层的JSP异常,应设置errorPage属性,并在错误显示页中打印必要的异常信息;
3. 而web.xml中可设置<error-page>作最后的异常处理补漏工作,例如,404,500等。
附:浏览器中有个选项叫“显示友好HTTP错误信息”,如果该选项被选定,服务器生成的错误页返回时就会被浏览器替换,因此,在做web应用开发时最好将该选项取消,以免影响测试:
打开浏览器-工具-Internet选项-高级-浏览-显示友好HTTP错误信息。
                    
                
                
            
        
浙公网安备 33010602011771号