修改完善这个专利部分

This commit is contained in:
super
2026-05-15 16:06:12 +08:00
parent e4e01c1686
commit 14db1e0cb1
45 changed files with 2842 additions and 2554 deletions
@@ -6,6 +6,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.async.AsyncRequestNotUsableException;
import java.io.IOException;
@Slf4j
@RestControllerAdvice
@@ -34,9 +37,33 @@ public class GlobalExceptionHandler {
return ApiResponse.fail(ex.getMessage());
}
@ExceptionHandler(AsyncRequestNotUsableException.class)
public void handleAsyncRequestNotUsableException(AsyncRequestNotUsableException ex) {
log.debug("Client disconnected before response completed: {}", ex.getMessage());
}
@ExceptionHandler(Exception.class)
public ApiResponse<Void> handleException(Exception ex) {
if (isClientAbort(ex)) {
log.debug("Client disconnected before response completed: {}", ex.getMessage());
return ApiResponse.fail("客户端已断开连接");
}
log.error("Unhandled exception", ex);
return ApiResponse.fail("服务异常: " + ex.getMessage());
}
private boolean isClientAbort(Throwable ex) {
Throwable cursor = ex;
while (cursor != null) {
String className = cursor.getClass().getName();
String message = cursor.getMessage() == null ? "" : cursor.getMessage().toLowerCase();
if (cursor instanceof AsyncRequestNotUsableException
|| cursor instanceof IOException && (message.contains("broken pipe") || message.contains("connection reset"))
|| className.contains("ClientAbortException")) {
return true;
}
cursor = cursor.getCause();
}
return false;
}
}