读书人

Spring定制自己的错误

发布时间: 2012-09-09 09:27:54 作者: rapoo

Spring定制自己的异常

为了能根据不同的情况做出不同的反应,我们可以让不同的情况抛出异常。

Spring里提供了HandlerExceptionResolver类来捕获异常。

下面 以代码作说明

1.首先抛出异常

if (meeting.getNeedExpert().size() == 0|| meeting.getProject().size() == 0) {throw new NoExpertException("此会议还没有专家");}

?我们自己定义了一个异常类为NoExpertException。

public class NoExpertException extends IllegalStateException {  private static final long serialVersionUID = 0L;public NoExpertException() {    }    public NoExpertException(String s) {        super(s);    }}

?2.配置异常解析器

<bean id="noExpertExceptionResolver"name="code">public class NoExpertExceptionResolver implements Ordered,        HandlerExceptionResolver {private int order;    private String exceptionView;    private String backUrl = "/";    private String backMsgKey;    public ModelAndView resolveException(HttpServletRequest request,            HttpServletResponse response, Object handler, Exception ex) {        if (ex instanceof NoExpertException) {        String errorMessage = ex.getMessage();            Map model = new HashMap();            model.put("backUrl", backUrl);            model.put("backMsgKey", backMsgKey);            model.put("errorMessage", errorMessage);            return new ModelAndView(exceptionView, model);        }        return null;    }    public int getOrder() {        return 0;    }    public void setOrder(int order) {        this.order = order;    }    public void setExceptionView(String exceptionView) {        this.exceptionView = exceptionView;    }    public void setBackUrl(String backUrl) {        this.backUrl = backUrl;    }    public void setBackMsgKey(String backMsgKey) {        this.backMsgKey = backMsgKey;    }}

?继承HandlerExceptionResolver以捕获异常,进行处理。!

?

读书人网 >软件架构设计

热点推荐