优化
This commit is contained in:
@@ -21,6 +21,7 @@ import org.springframework.web.bind.MissingServletRequestParameterException;
|
||||
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
@@ -79,6 +80,15 @@ public class GlobalExceptionHandler {
|
||||
return failure(ResultCode.FORBIDDEN, ResultCode.FORBIDDEN.message(), request);
|
||||
}
|
||||
|
||||
@ExceptionHandler(ResponseStatusException.class)
|
||||
public ResponseEntity<ApiResponse<Void>> handleResponseStatus(
|
||||
ResponseStatusException exception, HttpServletRequest request) {
|
||||
ResultCode code = resultCode(exception.getStatusCode().value());
|
||||
String message = exception.getReason() == null || exception.getReason().isBlank()
|
||||
? code.message() : exception.getReason();
|
||||
return failure(code, message, request);
|
||||
}
|
||||
|
||||
@ExceptionHandler(Exception.class)
|
||||
public ResponseEntity<ApiResponse<Void>> handleUnexpected(Exception exception, HttpServletRequest request) {
|
||||
log.error("Unhandled request failure requestId={} traceId={}",
|
||||
@@ -123,4 +133,18 @@ public class GlobalExceptionHandler {
|
||||
meterRegistry.counter("baiyue.api.business.failures", "code", code.code()).increment();
|
||||
}
|
||||
}
|
||||
|
||||
private ResultCode resultCode(int status) {
|
||||
return switch (status) {
|
||||
case 400 -> ResultCode.BAD_REQUEST;
|
||||
case 401 -> ResultCode.UNAUTHORIZED;
|
||||
case 403 -> ResultCode.FORBIDDEN;
|
||||
case 404 -> ResultCode.NOT_FOUND;
|
||||
case 409 -> ResultCode.CONFLICT;
|
||||
case 422 -> ResultCode.VALIDATION_FAILED;
|
||||
case 429 -> ResultCode.TOO_MANY_REQUESTS;
|
||||
case 503 -> ResultCode.SERVICE_UNAVAILABLE;
|
||||
default -> ResultCode.INTERNAL_ERROR;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user