1. 首先,我们定义一个自定义异常类,用于表示业务逻辑中的特定错误。
public class BusinessException extends RuntimeException {
private int code;
private String message;
public BusinessException(int code, String message) {
super(message);
this.code = code;
this.message = message;
}
// getter 和 setter 省略
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2. 然后,创建一个全局异常处理器@ControllerAdvice
或@RestControllerAdvice
,用于捕获并处理异常。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
public ResponseEntity<Object> handleBusinessException(BusinessException e) {
// 自定义返回格式
Map<String, Object> body = new HashMap<>();
body.put("code", e.getCode());
body.put("message", e.getMessage());
return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
}
// 可以添加更多异常处理方法来捕获不同类型的异常
@ExceptionHandler(Exception.class)
public ResponseEntity<Object> handleException(Exception e) {
// 通用异常处理
Map<String, Object> body = new HashMap<>();
body.put("code", 500);
body.put("message", "服务器内部错误");
return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR);
}
}