BusinessException convert(Throwable e) { if (e instanceof BusinessException) { return (BusinessException) e; } if (e instanceof MissingServletRequestParameterException) { MissingServletRequestParameterException me = (MissingServletRequestParameterException) e; String paramKey = me.getParameterName(); String paramType = me.getParameterType(); Logger log = RestPackAspect.getLog(); if (log != null && log.isInfoEnabled()) { log.info("miss param, key = {}, type = {}", paramKey, paramType); } return new BusinessException(ErrorCodes.NULL_PARAM) .put("key", paramKey); } // Error 没有办法拦截,这里只能日志记录异常信息。 if (e instanceof Error) { e.printStackTrace(); Logger log = RestPackAspect.getLog(); if (log != null) { log.error(e.getMessage(), e); } } return new BusinessException(ErrorCodes.UNKNOWN_ERROR, e) .setMessage(e.getClass().getName() + ": " + e.getMessage()); }
@Override protected ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { MultibankingError error = MultibankingError.builder().status(HttpStatus.BAD_REQUEST) .text(ErrorConstants.ERR_PARAMETER) .renderedMessage(ErrorConstants.ERR_PARAMETER_MESSAGE) .exception(ex).build(); error.getParams().put(ErrorConstants.ERR_PARAMETER_NAME_KEY, ex.getParameterName()); error.getParams().put(ErrorConstants.ERR_PARAMETER_TYPE_KEY, ex.getParameterType()); return handleExceptionInternal(ex, error, headers, error.getStatus(), request); }
@Override protected ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { MultibankingError error = MultibankingError.builder().status(HttpStatus.BAD_REQUEST) .text(ErrorConstants.ERR_PARAMETER) .renderedMessage(ErrorConstants.ERR_PARAMETER_MESSAGE) .exception(ex).build(); error.getParams().put(ErrorConstants.ERR_PARAMETER_NAME_KEY, ex.getParameterName()); error.getParams().put(ErrorConstants.ERR_PARAMETER_TYPE_KEY, ex.getParameterType()); return handleExceptionInternal(ex, error, headers, error.getStatus(), request); }
MissingServletRequestParameterException actualException = (MissingServletRequestParameterException) exception; String name = actualException.getParameterName(); String type = actualException.getParameterType();