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"
		class="com.itware.lxgl.workflow.exception.NoExpertExceptionResolver">
		<property name="order">
			<value>1</value>
		</property>
		<property name="exceptionView">
			<value>exception/noExpertException</value>
		</property>
		<property name="backUrl">
			<value>/home/todoList.htm</value>
		</property>
		<property name="backMsgKey">
			<value>返回</value>
		</property>
	</bean>

 3.编写解析器代码

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以捕获异常,进行处理。!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值