用AOP去做异常处理。
1.@ControllerAdvice
相当于 controller
的切面,主要用于 @ExceptionHandler
, @InitBinder
和 @ModelAttribute
,使注解标注的方法对每一个 controller
都起作用。默认对所有 controller
都起作用,当然也可以通过 @ControllerAdvice
注解中的一些属性选定符合条件的 controller
。
2.@ExceptionHandler
用于异常处理的注解,可以通过 value
指定处理哪种类型的异常还可以与 @ResponseStatus
搭配使用,处理特定的 http
错误。标记的方法入参与返回值都有很大的灵活性。
@RestControllerAdvice
public class GeneralExceptionHandler {
@ExceptionHandler(Exception.class)
protected ResponseBean handleException(Exception ex) {
MyError myError = MyError.builder()
.text(ex.getMessage())
.code(ex.getErrorCode()).build();
return new ResponseBean (myError,
HttpStatus.valueOf(ex.getErrorCode()));
}
}
用 @RestControllerAdvice
注解,它会将数据自动转换成JSON格式。