修改完善这个专利部分
This commit is contained in:
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user