刚接触的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;
}