pull/9/head
tanghc 4 years ago
parent b3aa515d01
commit 3247f4528a
  1. 14
      sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/GlobalExceptionHandler.java

@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets;
@Slf4j
public class GlobalExceptionHandler {
/**
* 与网关约定好的状态码表示业务出错
*/
@ -33,10 +34,15 @@ public class GlobalExceptionHandler {
private static final int SYSTEM_ERROR_CODE = 5050;
/**
* 返回错误信息headerName
* header中的错误code
*/
private static final String X_SERVICE_ERROR_HEADER_NAME = "x-service-error-code";
/**
* header中的错误信息
*/
private static final String X_SERVICE_ERROR_MESSAGE = "x-service-error-message";
/**
* 捕获手动抛出的异常
*
@ -63,7 +69,6 @@ public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Object exceptionHandler(HttpServletRequest request, HttpServletResponse response, Exception exception) {
response.addHeader(X_SERVICE_ERROR_HEADER_NAME, String.valueOf(SYSTEM_ERROR_CODE));
log.error("系统错误", exception);
StringBuilder msg = new StringBuilder();
msg.append(exception.getMessage());
@ -74,7 +79,10 @@ public class GlobalExceptionHandler {
StackTraceElement stackTraceElement = stackTrace[i];
msg.append("\n at ").append(stackTraceElement.toString());
}
response.setHeader("x-service-error-message", UriUtils.encode(msg.toString(), StandardCharsets.UTF_8));
// 需要设置两个值,这样网关会收到错误信息
// 并且会统计到监控当中
response.setHeader(X_SERVICE_ERROR_HEADER_NAME, String.valueOf(SYSTEM_ERROR_CODE));
response.setHeader(X_SERVICE_ERROR_MESSAGE, UriUtils.encode(msg.toString(), StandardCharsets.UTF_8));
return this.processError(request, response, new ServiceException("系统繁忙"));
}

Loading…
Cancel
Save