异常处理(14)

前记:这是很早之前自学学习spingMvc时的笔记,内容比较基础,适合新手,内容基本是来自网络,如有雷同,敬请谅解!

  异常处理

  异常处理思路

系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

         系统的dao、service、controller出现都通过throwsException向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

 

springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

 

自定义异常类

事例:

 全局异常处理器

思路:

         系统遇到异常,在程序中手动抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。

         全局异常处理器处理思路:

                   解析出异常类型

                   如果该 异常类型是系统 自定义的异常,直接取出异常信息,在错误页面展示

                   如果该 异常类型不是系统 自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)

注:思路只是基本构思,细节上应根据具体项目而具体细化

springmvc提供一个HandlerExceptionResolver接口,自己定义的全局异常处理器要实现这个接口(HandlerExceptionResolver接口),并且要重写resolveException方法。

@Override

public ModelAndView resolveException

                        (HttpServletRequestrequest,

                         HttpServletResponseresponse,

                                        Objecthandler,

                                           Exceptionex) {

//handler就是处理器适配器要执行Handler对象(只有method

//    解析出异常类型

//    如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示

//    Stringmessage = null;

//    if(exinstanceof CustomException){

//       message= ((CustomException)ex).getMessage();

//    }else{

        如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为未知错误

//       message="未知错误";

//    }

      //上边代码变为

      CustomExceptioncustomException = null;

      if(ex instanceofCustomException){

         customException= (CustomException)ex;

      }else{

         customException= newCustomException("未知错误");

      }

      //错误信息

      Stringmessage = customException.getMessage();

      ModelAndViewmodelAndView = new ModelAndView();

      //将错误信息传到页面

      modelAndView.addObject("message",message);

      //指向错误页面

      modelAndView.setViewName("error");

      return modelAndView;

   }

 在springmvc.xml配置全局异常处理器





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值