应用中的异常处理(业务异常,非业务异常)
1.业务异常:指正常的业务处理时,由于某些业务的特殊要求而导致处理不能继续所抛出的异常。
?? 处理原则:在业务层或者业务的处理方法中抛出异常,在表示层中拦截异常,以友好的方式反馈给操作者,以便可以依据提示信息正确的完成任务功能的处理。
2.非业务异常:非正常工作情况下所产生的异常。
处理原则:在应用的框架中同意拦截和处理,在开发中不需要进行任何处理。
3.。业务异常的设计。
1)结构上划分为3个层次。第一层:异常基类。第二层:功能层或者模块层。第三层:业务异常层。
2)基类的构建:通常会定义一个继承自RuntimeException的基类,这样对于业务异常就可以在运行时由系统的框架进行捕获。接着为每个层次定义一个基类,最后为每个业务异常定义一个业务对象。另外为了减少异常对象的数量,在这一层也可以采用错误代码的设计方式,使得顶层的拦截程序可以依据错误代码来得到相应的错误信息。
4.在servlet容器里处理异常。
1)配置web.xml捕获异常。
<error-page>
???? <error-code>404</error-code>
???? <location>/error.jsp</location>
</error-page>
<error-page>
???? <exception-type>javax.servlet.ServletException</exception-type>
???? <location>/error.jsp</location>
</error-page>
2)在jsp页面中使用errorPage属性进行拦截。
5.struts的异常处理机制。
1)异常的配置,
配置<exception/>。属性介绍
type:指定被处理的异常类。
handler:指定异常处理类。默认org.apache.struts.action.ExcetionHandler,可以进行扩展。
path:指定捕获异常并进行处理后返回的地址,可以是页面,也可以是某个action。
key:指定错误消息的key。
bundle:错误信息绑定的资源文件。
scope:指定ActionMessage对象存放的范围。默认是request,也可以是session。
方式介绍
全局:在<global-exception><exception/></global-exception>中配置。
局部:在<action><exception/></action>中配置
2)异常信息的显示
方法和错误信息的显示相同。<html:errors></html:errors>
3)定义自己的异常处理类
继承ExceptionHandler,实现自己的异常处理类。
覆盖execute()方法,实现自己的异常处理方法。
将<exception/>元素中的handler属性配置为自定义的异常处理类。
6.利用扩展Action处理异常。
覆盖execute()方法。在异常捕获中实现自己的处理异常的方法。