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 层统一捕获处理。

 

posted on 2018-01-30 15:54  _路上  阅读(359)  评论(0编辑  收藏  举报

导航