应用场景:当业务流程处理出现数据错误或者验证错误,可以通过抛出异常方法中断此次业务流程,将该业务请求处理交由全局异常处理器处理,响应结果为异常处理器返回值(相当于接管原Controller与RequestMapping工作)。
@ControllerAdvice与@ExceptionHandler
示例:
@ControllerAdvice
public class SpringExceptionHandler{
/**
* 全局处理Exception
* 错误的情况下返回500
* @param ex
* @param req
* @return
*/
@ExceptionHandler(Exception.class)
//@ResponseBody,ResponseEntity相当于@ResponseBody+@ResponseState
public ResponseEntity<Object> handleExceptions(final Exception ex, final WebRequest req) {
TResult tResult = new TResult();
tResult.setStatus(500);
tResult.setErrorMessage(ex.getMessage());
return new ResponseEntity<Object>(tResult,HttpStatus.OK);
}
}