快速业务通道

在Spring基础上实现自己的异常处理框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

在Spring基础上实现自己的异常处理框架

时间:2011-01-02

该异常处理框架满足的要求:

完整的异常组织结构

异常的统一处理

可配置,受管式,方便使用

完整的异常组织结构:

用户可以方便的定义自己的异常,但所有UncheckedException需要继承BaseAppRuntimeException,所有的checked Exception可以继承BaseAppException,或者需要抛出且不需要check时用WrapperredAppException封装后抛出

合理地使用checked异常

Exception有唯一的error code,这样用户报告异常后,可以根据异常号找到相应Exception,把exception直接显示给用户也没有太大的意义,如何纪录exception那就是下文讲到的ExceptionHandler的职责了。

如果是第三方包括jdk中的异常,需要封装成BaseAppException或者BaseAppRuntimeException后抛出

在Spring基础上实现自己的异常处理框架 - 编程入门网

在Spring基础上实现自己的异常处理框架(2)

时间:2011-01-02

统一的异常处理

异常统一在框架中进行处理,不需要在上层应用的代码中去处理抛出的异常。为了尽量捕捉到所有的异常,将异常处理放在了ActionBroker中,这样凡是action以后抛出的异常都可以捕捉到,因为webservice只是简单的调用action类的方法,一般不会出现异常。当我们捕捉到异常后,需要进行异常处理,定义了ExceptionHandler接口,用接口抽象出异常处理类的具体实现。

在Spring基础上实现自己的异常处理框架 - 编程入门网

USFContextFactory: 创建ExceptionContext的工厂

package com.ldd600.exception.context; 2 3public class CoreContextFactory { 4  private static CoreContextFactory instance; 5 6  private volatile ExceptionContext exceptionContext; 7 8  private Object exceptionContextLock = new Object(); 9 10  private CoreContextFactory() { 11 12  } 13 14  public static synchronized CoreContextFactory getInstance() { 15    if (null == instance) { 16      instance = new CoreContextFactory(); 17    } 18    return instance; 19  } 20 21  public ExceptionContext getExceptionContext() { 22    ExceptionContext tempExpContext = exceptionContext; 23    if (tempExpContext == null) { 24      synchronized (exceptionContextLock) { 25        tempExpContext = exceptionContext; 26        if (tempExpContext == null) 27          exceptionContext = tempExpContext = new ExceptionContext(); 28      } 29    } 30    return tempExpContext; 31  } 32} 33

在Spring基础上实现自己的异常处理框架(3)

时间:2011-01-02

ExceptionContext: 存放全局的exception信息

1package com.ldd600.exception.context; 2 3import java.util.ArrayList; 4import java.util.Collection; 5import java.util.Collections; 6import java.util.HashMap; 7import java.util.List; 8import java.util.Map; 9import java.util.Set; 10 11import org.springframework.util.Assert; 12 13import com.ldd600.exception.base.BaseAppRuntimeException; 14import com.ldd600.exception.base.ConfigException; 15import com.ldd600.exception.base.handler.ExceptionHandler; 16import com.ldd600.exception.config.ExceptionDefinition; 17 18public class ExceptionContext { 19  private Map<Class<?>, ExceptionDefinition> exceptionMap; 20 21  private Map<String, ExceptionHandler> handlers = new HashMap<String, ExceptionHandler>(); 22 23  ExceptionContext() { 24    exceptionMap = ne

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号