首页 > 技术文章 > 四、Springmvc异常处理器

syj1993 2018-11-05 17:22 原文

springmvc.xml

添加异常处理器

<!-- Springmvc异常处理器 -->
<bean class="com.itheima.springmvc.exception.CustomExceptionResolver"></bean>

CustomExceptionResolver

package com.itheima.springmvc.exception;

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

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

/**
 * 异常处理器的自定义的实现类
 * @author mjl
 *
 */
public class CustomExceptionResolver implements HandlerExceptionResolver{

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj,
			Exception e) {
		//obj 发生异常的地方  包名+类名+方法名(形参) 字符串
		ModelAndView mv = new ModelAndView();
		
		//判断异常类型
		if(e instanceof MessageException){
			//预期异常
			MessageException me = (MessageException)e;
			mv.addObject("errorPage", me.getMsg());
		}else{
			mv.addObject("errorPage","未知异常");
		}
		
		mv.setViewName("showError");
		
		return mv;
	}

}

MessageException

package com.itheima.springmvc.exception;

public class MessageException extends Exception{

	private String msg;

	public MessageException(String msg) {
		super();
		this.msg = msg;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
	
}

ItemController

@Controller
public class ItemController {

	@Autowired
	private ItemService itemService;
	
	/**
	 * void-
	 * @throws MessageException 
	 */
	@RequestMapping(value="/item/itemList.action")
	public void itemList(Model model,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, MessageException{
		
		//已知的异常类型
	//	Integer i =1/0;
		
		List<Items> list = itemService.selectItemList();
		
		//自定义的异常类型
		if(null == null){
			throw new MessageException("商品信息不能为空");
		}
		
		model.addAttribute("itemList", list);
		request.getRequestDispatcher("/itemList").forward(request, response);
	}
}

  

  

  

推荐阅读