SpringBoot 全局異常處理

全局異常配置只須要添加一個全局的類便可,即配置全局異常Handler。java

使用@ControllerAdvice

@ControllerAdvice註解是用來配置控制器通知的,能夠配置過濾攔截具體一種或者多種類型的註解,添加annotations屬性便可,json

@ExceptionHandler註解用來配置須要攔截的異常類型,默認是全局類型。@ResponseStatus註解用於配置遇到該異常後返回數據時的StatusCode的值,這裏默認使用值500。在類的上方配置了@ControllerAdvice的annotations屬性值爲RestController.class,也就是隻有添加了@RestController註解的控制器纔會進入全局異常處理。服務器

RestExceptionHandler全局處理類代碼以下所示:spa

/**
 * @author cherrish
 * @time 2018-08-12 11:29
 * @name RestExceptionHandler
 * @desc: result 異常統一處理
 */
@ControllerAdvice(annotations = RestController.class)
@ResponseBody
@Slf4j
public class RestExceptionHandler {
    @ExceptionHandler
    @ResponseStatus
    public RestResp runtimeExceptionHandler(Exception e){
        log.error("Runtime exception: ", e.getMessage(),e);
        return RestResp.fail("服務器繁忙,請稍後再試!",null);
    }
}

返回數據格式RestResp:code

{
    "status": -1,
    "message": "服務器繁忙,請稍後再試",
    "data": null
}
相關文章
相關標籤/搜索