异常处理
This commit is contained in:
parent
ea5ddff70f
commit
f5a8ebf9f3
@ -0,0 +1,7 @@
|
||||
package com.lk.paopao.exception;
|
||||
|
||||
public class AuthFailedException extends BaseException{
|
||||
public AuthFailedException(String message) {
|
||||
super(401, message);
|
||||
}
|
||||
}
|
41
src/main/java/com/lk/paopao/exception/BaseException.java
Normal file
41
src/main/java/com/lk/paopao/exception/BaseException.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.lk.paopao.exception;
|
||||
|
||||
public class ResourceExistedException extends BaseException{
|
||||
public ResourceExistedException(String resourceName, String condition){
|
||||
super(409, "根据条件:【"+condition+"】可找到"+resourceName+"资源");
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.lk.paopao.exception;
|
||||
|
||||
public class ResourceNotFoundException extends BaseException{
|
||||
|
||||
public ResourceNotFoundException(String resourceName, String condition){
|
||||
super(404, "根据条件:【"+condition+"】无法找到"+resourceName+"资源");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user