论坛首页 Java企业应用论坛

struts通用Exception处理

浏览 3037 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-04  
struts通用Exception处理
自定义一个Exception类继承自RunTimeException,定义属性key、values等,并实现多个构造方法用于初始化。
如:
private String key; 
private Object values; 
//带key和参数 
public SystemException(String message,String key,Object value){ 
  super(message); 
  this.key=key; 
  this.values=new Object[]{value}; 
} 
//带key和参数数组 
public SystemException(String message,String key,Object values[]){ 
  super(message); 
  this.key=key; 
  this.values=values; 
} 
public SystemException(String message,String key) { 
  super(message); 
} 


struts-config.xml配置
  <global-exceptions>
  <!-- 全局异常 -->
   <exception key="error" type="java.lang.Exception" path="/common/error.jsp" />
  </global-exceptions>
在ExceptionHandler中实现附加参数等处理,如SystemExceptionHandler继承ExceptionHandler重写execute方法:

public ActionForward execute(Exception ex, ExceptionConfig ec, 
   ActionMapping mapping, 
   ActionForm form, 
   HttpServletRequest request, 
   HttpServletResponse response) throws ServletException { 
  ActionForward forward=null; 
  if(ec.getPath()!=null){ 
   forward=new ActionForward(ec.getPath()); 
  }else{ 
   forward=mapping.getInputForward(); 
  } 
  logger.debug("出现异常",ex); 
  if (ex instanceof SystemException) { 
   SystemException se = (SystemException) ex; 
   String key=se.getKey(); 
   ActionMessage error=null; 
   if(key==null){ 
    //无参,输入message 
    error=new ActionMessage(key,se.getMessage()); 
   }else{ 
    if(se.getValues()!=null){ 
     //带参 
     error=new ActionMessage(key,se.getValues()); 
    }else{ 
     //不带参 
     error=new ActionMessage(key); 
    } 
   }   
   //置error入 collection under Globals.ERROR_KEY. 
   this.storeException(request, key, error, forward, ec.getScope()); 
   return forward; 
  }   
  //默认 Handle the Exception. 
  //Return the ActionForward instance (if any) returned by the called ExceptionHandler 
  return super.execute(ex, ec, mapping, form, request, response);   
} 
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics