package com.ycl.config;
|
|
import com.ycl.api.CommonResult;
|
import com.ycl.enums.common.ResultCode;
|
import com.ycl.exception.ApiException;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.http.HttpStatus;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.validation.FieldError;
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@Configuration
|
@ControllerAdvice(annotations = {RestController.class, Controller.class})
|
@ResponseBody
|
public class ExceptionConfiguration {
|
// 捕获自定义异常数据
|
@ExceptionHandler(value = ApiException.class)
|
public CommonResult HandlePubException(ApiException pubExceptions) {
|
if (pubExceptions.getErrorCode() != null) {
|
System.out.println(String.format("错误:%d: %s",
|
pubExceptions.getErrorCode().getCode(),
|
pubExceptions.getErrorCode().getMessage()));
|
}
|
return CommonResult.failed(pubExceptions.getMessage());
|
}
|
|
@ExceptionHandler(value = MethodArgumentNotValidException.class)
|
public CommonResult HandleParamsException(HttpServletRequest request, MethodArgumentNotValidException exception) {
|
StringBuffer buffer = new StringBuffer();
|
for (FieldError error : exception.getBindingResult().getFieldErrors()) {
|
buffer.append(String.format("参数:%s,值为:%s, 原因:%s。", error.getField(), error.getRejectedValue(), error.getDefaultMessage()));
|
}
|
return CommonResult.failed(ResultCode.VALIDATE_FAILED, buffer.toString());
|
}
|
|
// 捕获其他异常
|
@ExceptionHandler// 直接返回500
|
public CommonResult HandleAllException(Exception exception) {
|
|
|
exception.printStackTrace();
|
// todo 记录日志
|
|
return CommonResult.failed(ResultCode.FAILED, "系统错误");
|
}
|
|
}
|