全局异常处理器

在这里插入图片描述

  • 创建自定义异常类,继承Exception
  • 创建springmvc全局异常处理器类,要实现HandlerExceptionResolver接口
  • 有一个错误页面
  • 模拟异常,throw new 自定义异常

模拟修改时,没有对应id的商品

自定义异常ItemsException
  • 需要继承Exception
package com.xuezhi.www.exception;

public class ItemsException extends Exception {
	
	private String message;
	
	public ItemsException(String message){
		this.message = message;
	}

	public String getMessage() {
		return message;
	}

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

全局异常处理器
  • 需要实现HandlerExceptionResolver接口
package com.xuezhi.www.exception;

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

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
 * HandlerExceptionResolver:springmvc提供的全局异常处理器接口
 * 只要实现这个接口,当前类就是全局异常类,所有抛出的异常都需要这个类处理执行
 * @author WGS
 *
 */
public class ExceptionResource implements HandlerExceptionResolver {

	public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
			Exception ex) {
		
		//处理异常思路
		/*
		 * 1.判断当前获取的异常,是否是自定义异常,如果是自定义异常,把当前异常强转为自定义异常,然后转向统一的错误提示页面
		 * 2.判断当前异常是否是运行时异常,转换为自定义异常,给出错误提示信息然后转向统一的错误提示页面
		 * 
		 * */
		
		//声明自定义异常对象,赋值为null
		ItemsException itemsException = null;
		
		//判断全局异常处理器 获取的异常类型
		if(ex instanceof ItemsException){
			itemsException = (ItemsException) ex; 
		}else{
			itemsException = new ItemsException("页面走丢了");
		}
		
		String message = itemsException.getMessage();
		
		ModelAndView mav = new ModelAndView();
		
		mav.addObject("message", message);
		
		mav.setViewName("error");
		
		return mav;
	}
	

	

}

把全局异常处理器交给springmvc管理
<!-- 把实现HandlerExceptionResolver接口的全局异常处理器交给springmvc管理 -->
	<bean class="com.xuezhi.www.exception.ExceptionResource"></bean>
在业务层实现类模拟异常出现
//模拟出现异常
	public Items selectByPrimaryKey(Integer id) throws Exception {
		Items items = iMapper.selectByPrimaryKey(id);
		
		if(items == null){
			throw new ItemsException("不好意思页面丢了");
		}
		
		return items;
	}
发布了213 篇原创文章 · 获赞 104 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42363032/article/details/104167018