美文网首页工作生活
springmvc全局异常处理

springmvc全局异常处理

作者: mml_慢慢来 | 来源:发表于2019-07-01 09:29 被阅读0次

其实用springmvc来实现全局异常处理我在一起的学习demo中也用到了,今天因为有些地方不是那么清晰了,所以干脆写成博客,记录下来。

用springmvc实现全局异常处理我知道的有两种方式:

1、继承HandlerExceptionResolver实现个自定义的全局异常处理器,重写resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex)

有4个参数,第一个(请求当前的HTTP请求)、第二个(响应当前的HTTP响应)、第三个(处理程序执行处理程序)、第四个(抛出的异常)

就是当你的程序抛出异常时,会回调这个方法。我们可以根据Exception的类型做出不同的处理

if(ex instanceof CustomException){
  System.out.println("这是自定义异常");
}ielse if(ex instanceof Exception){
  System.out.println("这是系统异常");
}

最后这个方法返回一个ModelAndView 可以把错误信息显示在页面上
要spring知道我们自定义了这个全局异常处理器只需在 spring配置文件中加入这个bean

<bean class="com.zzger.CustomHandlerExceptionResolver"/>

2、使用@ExceptionHandler注解来处理异常,我也非常喜欢这种方式,最重要的一点是它可以返回任何东西,不只是一个ModelAndView,可以是json等等..

可以在我们自己的controller中的方法上加上这个注解

@ExceptionHandler(CustomException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public MessageVo CustomException(CustomException ex){
        MessageVo vo = new MessageVo();
        vo.setStatus(ex.getStatus());
        vo.setMessage(ex.getMessage());
        return vo;
    }

这是我的一个示例
@ExceptionHandler里的参数是你想处理那个异常的class,上面的代码意思就是这个方法会处理所有抛出CustomException的异常
<pre name="code" class="java">@ResponseBody是把返回值按json输出
@ResponseStatus是修改此次的http响应码

然后今天就有一个地方忘记了

我把所以的ExceptionHandler单独放到了一个Controller中,可是出现异常的时候没有效果,原来我以前是把其他controller继承此Controller,所以才有效果

不过spring3.2之后提供了一个注解@ControllerAdvice,可以把当前的@ExceptionHandler在所以的@RequestMapping方法上都有效哦

嗯,因为我现在喜欢用ajax来和后台进行交互,所以第二种方式处理异常真是太棒了,写安卓的时候同样如此

相关文章

  • Spring Mvc 异常处理

    SpringMvc 异常全局解读 异常处理思路 首先来看一下在springmvc中,异常处理的思路 如上图所示,系...

  • SpringMVC全局异常处理

    在日常的开发过程中,你肯定遇到过页面报500的问题,这个时候如果我想一想就会觉得害怕,我们的项目如果真的在线上出现...

  • springmvc全局异常处理

    首先定义一个异常类,BusinessException,这个类必须继承RuntimeException类,不然会一...

  • springmvc全局异常处理

    其实用springmvc来实现全局异常处理我在一起的学习demo中也用到了,今天因为有些地方不是那么清晰了,所以干...

  • SpringMvc处理全局异常

    处理全局异常的方法主要为两种: 实现HandlerExceptionResolver接口 @ControllerA...

  • SpringMVC 全局异常处理

    创建ExceptionResolver实现HandlerExceptionResolver接口: 添加@Compo...

  • 全局异常处理

    首先,处理思路,嗯对,就是想想: 其次,创建全局异常处理器,开写 最后,Springmvc中配置异常处理器 ok!...

  • 11.全局异常处理器

    GlobalExceptionResolver.java Springmvc.xml配置全局异常处理器 最终的日志...

  • SpringMVC全局异常

    目录 无SpringMVC全局异常时的流程图 SpringMVC全局异常流程图 配置文件

  • spring/springmvc 全局异常处理

    1.在项目中为什么要统一异常处理 当异常返回到前端页面的时候可以统一处理,避免前端无法处理异常 不做统一异常处理,...

网友评论

    本文标题:springmvc全局异常处理

    本文链接:https://www.haomeiwen.com/subject/twpwcctx.html