学习笔记之springmvc的异常处理

需求:当出问题时,不能总是显示404页面等,我们可以设置异常处理信息。

首先我们可以自定义一个异常

package com.ssm.exception;

public class ShopException extends Exception {

	// 异常信息
	public String message;

	public ShopException(String message) {
		super(message);
		this.message = message;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

}

让他继承exception类,它的构造函数接受错误信息,并输出,这样我们可以手动抛出这个异常

我们接下拉定义全局异常管理器。

package com.ssm.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class ShopExceptionResolver implements HandlerExceptionResolver{
//ex接受的异常
	@Override
	public ModelAndView resolveException(HttpServletRequest request, 
			HttpServletResponse response, Object handler, Exception ex) {
		// TODO Auto-generated method stub
		  ShopException shopException =null;
		  //如果是系统自定义的异常则直接转换
		    if(ex instanceof ShopException) {
		    	shopException =(ShopException)ex;
		    	
		    	 }else {
		    		 //如果抛出的不是系统自定义的异常,则要重新构造一个未知错误异常
		    		 shopException=new ShopException("未知错误");
		    	 }
		 //错误信息
		    String message=shopException.getMessage();
		    ModelAndView modelAndView =new ModelAndView();
		 //将错误信息转到页面上去
           modelAndView.addObject("errormessage", message);		    
		 //转发到jsp页面

           modelAndView.setViewName("error");
		return modelAndView;
	}
   
}

这将所有异常进行了批量管理。他必须继承HandlerExceptionResolver接口这个类才能被当作全局异常管理器。

接下来在springmvc中配置springmvc的异常管理器


这个bean的class就是我们自定义的全局异常管理器。

如果

if (orderByName.size() == 0) {
			throw new ShopException("查询的信息不存在");
		}

这种错误我们手动抛出异常。那么接下来自定义的全局异常管理器便会接手这个异常,因为出错后我们抛出了ShopException这个自定义异常,所以全局处理器会根据系统自定义异常来管理这个错误。

如果不抛出自定义异常那么只会显示未知错误


猜你喜欢

转载自blog.csdn.net/sunmeok/article/details/80459559