zoukankan      html  css  js  c++  java
  • Spring 异常处理

    Spring 中的异常处理可以有如下几种处理方式:

    1、简单的可以通过抛出特定异常,Spring 会自动转换为对应的 HTTP 状态码,或者自定义异常,添加对应状态码注解,如

    @ResponseStatus(value=HttpStatus.NOT_FOUND, reason="Spittle Not Found")
    public class SpittleNotFoundException extends RuntimeException {
    }

    2、在同一个文件中编写异常处理器,单独写一个方法,添加 @ExceptionHandler(XXXException.class) 注解,如:

    @ExceptionHandler(DuplicateSpittleException.class)
    public String handlerDuplicateSpittle() {
        return "error/duplicate";
    }

    3、单独编写一个统一异常处理类,如

    @ControllerAdvice
    public class AppWideExceptionHandler {
        @ExceptionHandler(DuplicateSpittleException.class)
        public String duplicateSpittleHandler() {
            return "error/duplicate";
        }  
    }

    4、对于 Rest 等方式中的异常,可以在异常处理方法上面添加 @ResponseStatus、@ResponseBody 注解,如:

    @ExceptionHandler(DuplicateSpittleException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    @ResponseBody
    public String error(DuplicateSpittleException e) {
        return e.getMessage();
    }

    5、更复杂的情况可以通过返回 ResponseEntity<T> 解决

    平时开发中,我们可以不通过标志位来判断执行结果,而是通过抛出异常,之后在 Controller 层统一捕获处理。

  • 相关阅读:
    pat 1027. Colors in Mars (20)
    pat 1035. Password (20)
    pat 1006. Sign In and Sign Out (25)
    pat 1031. Hello World for U (20)
    pat 1005. Spell It Right (20)
    pat 1002. A+B for Polynomials (25)
    pat 1008. Elevator (20)
    pat 1001. A+B Format (20)
    算法分析与设计实验四 密码算法
    Android通讯录管理(获取联系人、通话记录、短信消息)
  • 原文地址:https://www.cnblogs.com/zawier/p/7455609.html
Copyright © 2011-2022 走看看