刚接触的SpringMVC异常抛出的处理
收先自定义一个系统异常处理并且继承Exception
//自定义异常类 public class CustomerException extends Exception{ //异常信息 private String message; public CustomerException(String message){ super(message); this.message=message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
完成后再自定义一个全局异常处理器
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; //全局异常处理器 public class CustomerExceptionResolver implements HandlerExceptionResolver{ @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // //handler就是处理适配器要执行的Handler对象(只有method) // String message=null; // //如果该异常是系统自定义的异常,直接取出异常信息,在错误页面上显示 // if(ex instanceof CustomerException){ // message=((CustomerException)ex).getMessage(); // }else{ // //如果不是系统自定义异常信息,构造一个自定义的异常类型,(信息为:未知错误) // message="未知错误"; // } CustomerException customerException=null; if(ex instanceof CustomerException){ customerException=((CustomerException)ex); }else{ customerException=new CustomerException("未知错误"); } //错误信息 String message=customerException.getMessage(); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("message", message); modelAndView.setViewName("error"); return modelAndView; } }
在编写完后在SpringMVC.xml文件中配置bean
<!-- 全局异常处理器配置 --> <bean class="xb.cn.ssm.exception.CustomerExceptionResolver"></bean>
以上基本上就是对异常的处理。
测试异常处理;
这儿是在业务层进行处理:也可以在控制层进行,一般进行业务处理在service中,非业务处理异常在控制层中。
注意到throws Execption继续抛出,让调用它的控制层进行处理。
@Override //根据商品你的ID查询商品 public ItemsCustomer findItemsById(Integer id) throws Exception { Items items=itemsMapper.selectByPrimaryKey(id); //判断商品是否为空 if(items==null){ throw new CustomerException("修改的商品信息不存在"); } /** * 这中间还可以添加更多的业务 */ ItemsCustomer itemsCustomer=null; //将Items的属性值拷贝到itemsCustomer if(items!=null){ itemsCustomer=new ItemsCustomer(); BeanUtils.copyProperties(items, itemsCustomer); } return itemsCustomer; }