SpringMVC中的异常处理

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值