|
@@ -29,41 +29,39 @@ public class DatabaseExceptionInterceptor {
|
|
|
/**
|
|
|
* 参数异常转换
|
|
|
*
|
|
|
- * @param response 请求响应对象
|
|
|
- * @param exception 异常对象
|
|
|
+ * @param request Http请求对象
|
|
|
+ * @param response Http响应对象
|
|
|
+ * @param e 异常对象
|
|
|
* @return 请求结果
|
|
|
*/
|
|
|
@ResponseStatus(HttpStatus.PRECONDITION_FAILED)
|
|
|
@ExceptionHandler(ParameterInvalidException.class)
|
|
|
- public Result<?> exception(HttpServletRequest request, HttpServletResponse response,
|
|
|
- ParameterInvalidException exception) {
|
|
|
- log.warn(SessionContextHolder.getLoggingMessage(request, HttpStatus.PRECONDITION_FAILED, exception));
|
|
|
- Result<?> result = Result.build(HttpStatus.PRECONDITION_FAILED, exception.getData());
|
|
|
- response.setStatus(result.getCode());
|
|
|
+ public Result<?> exception(HttpServletRequest request, HttpServletResponse response, ParameterInvalidException e) {
|
|
|
+ log.warn(SessionContextHolder.getLoggingMessage(request, HttpStatus.PRECONDITION_FAILED, e));
|
|
|
SessionContextHolder.initializeResponseWrappingHeader(response);
|
|
|
- return result;
|
|
|
+ return Result.build(HttpStatus.PRECONDITION_FAILED, e.getData());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 数据持久化异常转换
|
|
|
*
|
|
|
- * @param response 请求响应对象
|
|
|
- * @param exception 异常对象
|
|
|
+ * @param request Http请求对象
|
|
|
+ * @param response Http响应对象
|
|
|
+ * @param e 异常对象
|
|
|
* @return 请求结果
|
|
|
*/
|
|
|
@ExceptionHandler(MyBatisSystemException.class)
|
|
|
- public Result<?> exception(HttpServletRequest request, HttpServletResponse response,
|
|
|
- MyBatisSystemException exception) {
|
|
|
- ParameterInvalidException parameterInvalidException =
|
|
|
- ErrorUtils.lookup(exception, ParameterInvalidException.class);
|
|
|
+ public Result<?> exception(HttpServletRequest request, HttpServletResponse response, MyBatisSystemException e) {
|
|
|
+ ParameterInvalidException parameterInvalidException = ErrorUtils.lookup(e, ParameterInvalidException.class);
|
|
|
if (parameterInvalidException != null) {
|
|
|
+ response.setStatus(HttpStatus.PRECONDITION_FAILED.value());
|
|
|
return this.exception(request, response, parameterInvalidException);
|
|
|
}
|
|
|
- String message = SessionContextHolder.getLoggingMessage(request, HttpStatus.INTERNAL_SERVER_ERROR, exception);
|
|
|
- log.error(message, exception);
|
|
|
- Result<?> result = Result.build(HttpStatus.INTERNAL_SERVER_ERROR);
|
|
|
- response.setStatus(result.getCode());
|
|
|
+ log.error(SessionContextHolder.getLoggingMessage(request, HttpStatus.INTERNAL_SERVER_ERROR, e), e);
|
|
|
+ response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
|
|
|
SessionContextHolder.initializeResponseWrappingHeader(response);
|
|
|
- return result;
|
|
|
+ boolean wrapping = SessionContextHolder.isResponseWrappingHeader(request);
|
|
|
+ String message = wrapping ? HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase() : e.getMessage();
|
|
|
+ return Result.build(HttpStatus.INTERNAL_SERVER_ERROR, null, message);
|
|
|
}
|
|
|
}
|