- 创建自定义异常类,继承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;
}