springmvc学习之异常处理器

来源:互联网 发布:chalea高清网络电视 编辑:程序博客网 时间:2024/06/05 18:56

1.异常种类
有两种异常:1)预期异常
2)运行时异常
springmvc提供一个全局异常处理器(一个系统只有一个)进行统一异常处理
2. 自定义异常类
根据预期的异常,在程序中抛出此系统自定义的异常
这个类用来表示是不是系统自定的异常

```public class CustomException extends Exception{    public String message; //定义异常信息   public CustomException(String  message) {          super(message);          this.message = message;          }    public String getMessge(){             return message;}public String setMessage(String message) {           this.message = message;           }构造函数进行赋值,也可以继承父类的构造函数来,使用super(message);

3.全局异常处理器
思路:系统遇到异常,在程序中手动抛出,dao抛给service,service抛给controller,controller抛给前端控制器,前端控制器调用全局异常处理器。
全局异常处理器处理思路:
解析出异常类型,如果该异常类型是系统自定义的异常,直接取出异常信息在页面进行展示,如果不是则构造一个异常信息(信息为“未知错误”)
全局异常处理器:实现HandlerexceptionResolver接口,在springmvc中配置全局异常处理器,不用id,直接实现上面的接口就可以了,

 <bean class="自己写的类的全限定名"> </bean>
public class CustomExceptionTest implement  HandlerexceptionResolver {        @Override        public  ModelAndView resolveException(HttpServletRequest request ,HttpServletResponse response ,Object handler, Exception ex) {//handler就是处理器适配器Handler对象,只有method        CustomException customException = new CustomException();        //如果是ex系统自定义的异常,就强转为自己定义的异常类,如果不是就输出位置错误;        if(ex instanceof customException ) {        customException =(customException )ex;        }else{        customException = new CustomException("未知错误");       }         String message = customException.getMessage;        //创建ModelAndView 添加message到页面,并指向要跳转的页面        ModelAndView  modelAndView = new ModelAndView();        modelAndView.addObject("message",message);        modelAndView.setViewName("error");        return modelAndView;        }}

4.异常测试
在controller,service,dao任一层手动抛出能使用的自己写的异常信息,如果不是手动抛出异常,说明是一个运行时错误显示未知错误 。
如:

 if(item == null ){          throw new CustomException("修改的商品信息不存在");          }

PS: 与业务无关的建议在controller层抛出,有关的建议在service层抛出,service层能抛出是因为业务层函数有throw Exception, throw Exception表示抛出让上层来处理。

原创粉丝点击