Spring MVC 处理异常的3种方式

简介: 三种方式@ExceptionHandler标注的方法被定义为处理指定类型异常;@ResponseStatus标注的方法执行,会修改响应头中的状态码;Spring会把@ControllerAdvice的类内部使用@ExceptionHandler方法应用到所有的 @RequestMapping注解的方法上ExceptionHandler注解方式注:@ExceptionHandler标注的方法,方法签名灵活、多变。

三种方式

  • @ExceptionHandler标注的方法被定义为处理指定类型异常;
  • @ResponseStatus标注的方法执行,会修改响应头中的状态码;
  • Spring会把@ControllerAdvice的类内部使用@ExceptionHandler方法应用到所有的 @RequestMapping注解的方法上

ExceptionHandler注解方式

注:@ExceptionHandler标注的方法,方法签名灵活、多变。被@ResponseStatus注解的方法将会修改相应状态码,而使用@ResponseBody可以返回json格式的数据,再供前端处理

 /**
     * 用户注册
     * @param user
     * @return
     */
    @GetMapping("/register")
    public String register(User user){
        Assert.notNull(null,"request is null");
        userService.register(user);
        return "success";
    }

    /**
     * 当前控制器的异常处理
     */
//    @ResponseStatus(value = HttpStatus.BAD_REQUEST,reason = "参数异常")
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public String exceptionHandler(RuntimeException e){
        // 不做任何事或者可以做任何事
        return e.getMessage();
    }

全局异常处理

@ControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    public GlobalExceptionHandler() {
    }

    @ExceptionHandler({Exception.class})
    public String defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
        log.error("---BaseException Handler---Host {} invokes url {} ERROR: ", new Object[]{req.getRemoteHost(), req.getRequestURL(), e});
        return JsonResUtil.respJson(CodeEnum.SERVICE_ERROR);
    }

    @ExceptionHandler({AppException.class})
    public String jsonErrorHandle(HttpServletRequest req, AppException e) {
        log.warn("---BaseException Handler---Host {} invokes url {}  ", req.getRemoteHost(), req.getRequestURL());
        return JsonResUtil.respJson(e.getCode(), e.getMessage());
    }
}

文章参考:
http://www.cnblogs.com/zhaohongtian/p/6807100.html

相关文章
|
1月前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
90 0
|
1月前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
1月前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
1月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
42 1
|
14天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
14天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
14天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
30 3
|
24天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
30天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
71 0