定义异常类
java
package com.shore.my_spring_demo.exception;
import com.shore.my_spring_demo.common.enums.ErrorEnums;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class UsersException extends RuntimeException {
private int code;
public UsersException() {
super();
}
public UsersException(String message) {
super(message);
}
public UsersException(String message, Throwable cause) {
super(message, cause);
}
public UsersException(int code, String message, Throwable cause) {
super(message, cause);
this.code = code;
}
public UsersException(ErrorEnums errorEnums, Throwable cause) {
super(errorEnums.getValue(), cause);
this.code = errorEnums.getCode();
}
public UsersException(ErrorEnums errorEnums) {
super(errorEnums.getValue());
this.code = errorEnums.getCode();
}
public UsersException(Throwable cause) {
super(cause);
}
}
定义错误码
java
package com.shore.my_spring_demo.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ErrorEnums {
UN_LOGIN(101, "用户未登录"),
USER_NOT_FOUND(102, "用户未找到"),
USER_ALREADY_EXIST(103, "用户已存在"),
FAIL_VALIDATE(201, "token 校验失败"),
FAIL_ENCODE(202, "密码校验失败"),
UNKNOWN_ERROR(901, "未知异常"),
;
private final int code;
private final String value;
}
定义全局异常处理 GlobalExceptionHandler
java
package com.shore.my_spring_demo.web.advice;
import com.shore.my_spring_demo.common.enums.ErrorEnums;
import com.shore.my_spring_demo.exception.UsersException;
import com.shore.my_spring_demo.web.domain.common.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UsersException.class)
public ResponseEntity<ApiResponse<Void>> UsersExceptionHandler(UsersException exception) {
log.info("errorCode: {}, errorMsg: {}", exception.getCode(), exception.getMessage());
return ResponseEntity.badRequest().body(ApiResponse.error(exception.getCode(), exception.getMessage()));
}
@ExceptionHandler(Exception.class)
public ResponseEntity<ApiResponse<Void>> generalExceptionHandler(Exception exception) {
log.error("未捕获异常", exception);
return ResponseEntity.badRequest().body(ApiResponse.error(ErrorEnums.UNKNOWN_ERROR.getCode(), ErrorEnums.UNKNOWN_ERROR.getValue()));
}
}