Commit 1f0dcf6d authored by daniel's avatar daniel

feat(GlobalException):空指针异常处理

parent 92560ec3
...@@ -10,9 +10,14 @@ import org.springframework.web.bind.annotation.ResponseBody; ...@@ -10,9 +10,14 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException; import org.springframework.web.multipart.MaxUploadSizeExceededException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
@Log4j2 @Log4j2
@Order(0) @Order(0)
@RestControllerAdvice @RestControllerAdvice
...@@ -43,4 +48,48 @@ public class GlobalExceptionHandler { ...@@ -43,4 +48,48 @@ public class GlobalExceptionHandler {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return ResultBean.fail("文件大小超出限制,最大允许: "+maxFileSize); return ResultBean.fail("文件大小超出限制,最大允许: "+maxFileSize);
} }
@ResponseBody
@ExceptionHandler(NullPointerException.class)
public ResultBean<?> handleNpe(NullPointerException ex, HttpServletRequest request) {
String uri = request.getRequestURI();
String method = request.getMethod();
String query = request.getQueryString();
String ip = getClientIp(request);
String params = getRequestParams(request);
log.error("NullPointerException occurred\n" + "URI : {}\n" + "Method : {}\n" + "Query : {}\n" + "params :{}\n" + "IP : {}\n" + "Message : {} ", uri, method, query, params, ip, ex.getMessage(), ex);
return ResultBean.fail("服务器异常,请稍后再试");
}
/**
* 获取请求的ip
* @param request 请求参数
* @return ip
*/
private String getClientIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
/**
* 获取请求参数
* @param request 请求参数
* @return params
*/
private String getRequestParams(HttpServletRequest request) {
Map<String, String[]> paramMap = request.getParameterMap();
if (paramMap.isEmpty()) {
return "";
}
return paramMap.entrySet()
.stream()
.map(e -> e.getKey() + "=" + Arrays.toString(e.getValue()))
.collect(Collectors.joining("&"));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment