快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
nition(Class<?> expClazz) { 90    if (containsException(expClazz)) { 91      return exceptionMap.get(expClazz);  92    } else if (BaseAppRuntimeException.class.isAssignableFrom(expClazz.getSuperclass())) { 93      return getExceptionDefinition(expClazz.getSuperclass()); 94    } else { 95      return null; 96    } 97  } 98   99  public ExceptionDefinition getRealExceptionDefinition(Class<?> expClazz) { 100    return exceptionMap.get(expClazz); 101  } 102 103  public List<ExceptionHandler> getExceptionHandlers(Class<?> expClazz){ 104    ExceptionDefinition definition = getExceptionDefinition(expClazz); 105    if (null != definition) { 106      Set<String> handlerNames = definition.getHandlerNames(); 107      List<ExceptionHandler> handlerList = new ArrayList<ExceptionHandler>(handlerNames.size()); 108      for (String handlerName : handlerNames) { 109        ExceptionHandler handler = handlers.get(handlerName); 110        handlerList.add(handler); 111      } 112      List<ExceptionHandler> resultHandlerList = new ArrayList<ExceptionHandler>(handlerList); 113      return resultHandlerList; 114    } else { 115      return Collections.<ExceptionHandler> emptyList(); 116    } 117  } 118   119  public String getErrorCode(Class<?> expClazz){ 120    ExceptionDefinition definition = getExceptionDefinition(expClazz); 121    if (null != definition) { 122      return definition.getErrorCode(); 123    } else { 124      return ""; 125    } 126  } 127   128   129} 130

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

时间:2011-01-02

ExceptionDefinition: Exception信息单元

1package com.ldd600.exception.config; 2 3import java.util.LinkedHashSet; 4import java.util.Set; 5 6public class ExceptionDefinition { 7  private String errorCode; 8 9  private Set<String> handlerNames = new LinkedHashSet<String> (); 10 11  ExceptionDefinition() { 12     13  } 14   15  public ExceptionDefinition(String errorCode) { 16    this.errorCode = errorCode; 17  } 18   19  public String getErrorCode() { 20    return errorCode; 21  } 22 23  public void setErrorCode(String errorCode) { 24    this.errorCode = errorCode; 25  } 26 27  public Set<String> getHandlerNames() { 28    return handlerNames; 29  } 30} 31

ExceptionDefiniton定义了和某个exception相关的具体信息,根据exception的class name可以从exceptionContext中的exceptionMap得到指定的exception的相关信息,这些信息是在系统初始化时读取到exceptionContext中的。并且避免了exception handler的重复初始化。

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

采取两种配置方式,exception的相关信息比如它的errorCode, exceptionHandlers可以配置在外部的xml文件中,也可以用annotation标注。对于exception的处理是有继承性质的,如果某个exception没有在exceptionContext中注册,就使用它的父

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号