异常处理

This commit is contained in:
many2many 2024-05-12 17:00:00 +08:00
parent ea5ddff70f
commit f5a8ebf9f3
5 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,7 @@
package com.lk.paopao.exception;
public class AuthFailedException extends BaseException{
public AuthFailedException(String message) {
super(401, message);
}
}

View File

@ -0,0 +1,41 @@
package com.lk.paopao.exception;
/**
* 定义一个基础异常类用于封装业务异常信息
* 这个类是 RuntimeException 的子类意味着它是一个非检查Unchecked异常
* 它添加了一个错误码code来详细描述异常的类型
*/
public abstract class BaseException extends RuntimeException{
// 异常的错误码
private final int code;
/**
* 构造函数用于创建一个带有错误码和消息的基础异常实例
*
* @param code 异常的错误码用于标识异常的类型
* @param message 异常的详细信息帮助理解异常的原因
*/
public BaseException(int code, String message){
// 调用父类构造函数将消息传递给父类以初始化异常的详细信息
super(message);
this.code = code;
}
/**
* 构造函数用于创建一个带有错误码消息和导致异常的原因的基础异常实例
*
* @param code 异常的错误码用于标识异常的类型
* @param message 异常的详细信息帮助理解异常的原因
* @param cause 导致异常的原因便于问题追踪和处理
*/
public BaseException(int code, String message, Throwable cause) {
// 调用父类构造函数将消息和原因传递给父类以初始化异常的详细信息和原因
super(message, cause);
this.code = code;
}
public int getCode() {
return code;
}
}

View File

@ -0,0 +1,46 @@
package com.lk.paopao.exception;
import com.lk.paopao.dto.rest.response.Result;
import com.lk.paopao.dto.rest.response.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常处理器负责处理Controller层抛出的异常提供统一的异常响应格式
*/
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* 处理自定义异常BaseException返回相应的错误结果
*
* @param ex 自定义异常BaseException实例
* @return 返回封装了错误信息的Result对象
*/
@ExceptionHandler(BaseException.class)
@ResponseBody
public Result handleBaseException(BaseException ex) {
// 记录未预期异常信息
log.info(ex.getMessage(),ex);
return ResultUtil.fail(ex.getCode(),ex.getMessage());
}
/**
* 处理未预期的异常返回通用错误结果
*
* @param ex 异常实例
* @return 返回封装了错误信息的Result对象
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleUnexpectedException(Exception ex) {
// 记录未预期异常信息
log.warn(ex.getMessage(),ex);
// 返回通用错误结果, 500表示服务器内部错误
return ResultUtil.fail(500,ex.getMessage());
}
}

View File

@ -0,0 +1,7 @@
package com.lk.paopao.exception;
public class ResourceExistedException extends BaseException{
public ResourceExistedException(String resourceName, String condition){
super(409, "根据条件:【"+condition+"】可找到"+resourceName+"资源");
}
}

View File

@ -0,0 +1,8 @@
package com.lk.paopao.exception;
public class ResourceNotFoundException extends BaseException{
public ResourceNotFoundException(String resourceName, String condition){
super(404, "根据条件:【"+condition+"】无法找到"+resourceName+"资源");
}
}