Browse Source

feat:增加全局异常捕获与自定义异常

tags/freeze
白凤吉 3 months ago
parent
commit
7b74c697e4
  1. 21
      src/main/java/com/iflytop/gd/system/common/exception/AppException.java
  2. 4
      src/main/java/com/iflytop/gd/system/common/result/Result.java
  3. 24
      src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java

21
src/main/java/com/iflytop/gd/system/common/exception/AppException.java

@ -0,0 +1,21 @@
package com.iflytop.gd.system.common.exception;
import com.iflytop.gd.system.common.result.IResultCode;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class AppException extends RuntimeException {
private final IResultCode resultCode;
public AppException(IResultCode resultCode) {
super(resultCode.getMsg());
this.resultCode = resultCode;
}
@Override
public String toString() {
return "AppException{" + "code='" + resultCode.getCode() + ", msg=" + resultCode.getMsg() + '}';
}
}

4
src/main/java/com/iflytop/gd/system/common/result/Result.java

@ -53,6 +53,10 @@ public class Result<T> implements Serializable {
return result(resultCode.getCode(), StrUtil.isNotBlank(msg) ? msg : resultCode.getMsg(), null);
}
public static <T> Result<T> failed(String code, String msg) {
return result(code, msg, null);
}
private static <T> Result<T> result(IResultCode resultCode, T data) {
return result(resultCode.getCode(), resultCode.getMsg(), data);
}

24
src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java

@ -0,0 +1,24 @@
package com.iflytop.gd.system.handler;
import com.iflytop.gd.system.common.exception.AppException;
import com.iflytop.gd.system.common.result.Result;
import com.iflytop.gd.system.common.result.ResultCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public Result<?> handleException(Exception ex) {
if (ex instanceof AppException ae) {
log.warn("AppException:", ae);
return Result.failed(ae.getResultCode());
}
log.error("Unhandled exception:", ex);
return Result.failed(ResultCode.SYSTEM_ERROR);
}
}
Loading…
Cancel
Save