当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

springmvc ajax全局异常处理

发表于: 2013-04-02   作者:cargoj   来源:转载   浏览次数:
摘要: 我转载的这里:http://www.baeldung.com/2013/01/31/exception-handling-for-rest-with-spring-3-2/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Baeldung+%28baeldung%29 原文讲的是rest风格中的异常处理,不过通

我转载的这里:http://www.baeldung.com/2013/01/31/exception-handling-for-rest-with-spring-3-2/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Baeldung+%28baeldung%29

原文讲的是rest风格中的异常处理,不过通用性也不错。

 

 

2. Via Controller level @ExceptionHandler

Defining a Controller level method annotated with @ExceptionHandler is very easy:

 

public class FooController{
    ...
    @ExceptionHandler({ CustomException1.class, CustomException2.class })
    public void handleException() {
        //
    }
}

作为base controller继承,有一个限制就是你的controller可能必须继承其他类。

 

3. Via HandlerExceptionResolver

分别介绍了

3.1 spring3.1版本的ExceptionHandlerExceptionResolver,实际@ExceptionHandler就是靠它实现的。

3.2 spring3.0版本的DefaultHandlerExceptionResolver,ResponseStatusExceptionResolver。限制在于无法控制response body。

3.3 

SimpleMappingExceptionResolver and AnnotationMethodHandlerExceptionResolver

前者是异常与VIEW的映射,跟AJAX异常没什么关系,后者在3.2中已经被ExceptionHandlerExceptionResolver取代。

3.4 

Custom HandlerExceptionResolver

自己实现异常处理,我只是做测试,实际要根据需要来写。直接继承了SimpleMappingExceptionResolver在其中判断如果header是application/json就只是简单设置status为500,前台extjs ajax 在头中用application/json覆盖默认设置,后台出现异常会进入failure。

4. Via new @ControllerAdvice (Spring 3.2 Only)

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
    @ExceptionHandler(value = { IllegalArgumentException.class, IllegalStateException.class })
    protected ResponseEntity<Object> handleConflict(RuntimeException ex, WebRequest request) {
        String bodyOfResponse = "This should be application specific";
        return handleExceptionInternal(ex, bodyOfResponse,
          new HttpHeaders(), HttpStatus.CONFLICT, request);
    }
}

 推荐的3.2版本新方式。

?

 

springmvc ajax全局异常处理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
首先看springMVC的配置文件: <!-- 全局异常配置 start --> <bean id="exceptionResolver"
无论在Window应用程序,还是Web应用程序以对用户友好的方式显示运行时的异常都是很有必要,尤其对于可
业务场景很简单,就是在一个j2ee的web应用里同时需要两种异常处理,一种是restful的返回json异常,一
SpringMVC 提供的异常处理主要有两种方式,一种是直接实现自己的HandlerExceptionResolver,另一种
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号