public <T> Object doInvoke(MethodInvocation invocation) {
		// 统一异常处理，日志，参数检查
		try {
			return invocation.proceed();
		} catch (PrecondictionException e) {
			logger.error("Precondiction Error", e);
			return new CommonResp<T>(false, e.getErrorCode(), e.getMessage());
		} catch (BizException e) {
			String errorDesc = getErrorDesc(e.getErrorCode(), invocation.getMethod().getName());

			// 先默认打印级别为调试，如果需要在运行期记录，在外部打印其它级别
			logger.debug(errorDesc, e);

			return new CommonResp<T>(false, e.getErrorCode(), errorDesc);
		} catch (SystemException e) {
			String errorDesc = getErrorDesc(e.getErrorCode(), invocation.getMethod().getName());
			StringBuilder sb = null;
			if (StringUtils.isNotEmpty(e.getMessage())) {
				sb = new StringBuilder();
				sb.append("System Error : ").append(e.getMessage()).append(". \n").append(errorDesc);
			}

			logger.error(sb.toString(), e);

			return new CommonResp<T>(false, e.getErrorCode(), sb.toString());
		} catch (Throwable t) {
			logger.error(ErrorCode.SYSTEM_UNKNOW_ERROR.getDesc(), t);

			return new CommonResp<T>(false, ErrorCode.SYSTEM_UNKNOW_ERROR, ErrorCode.SYSTEM_UNKNOW_ERROR.getDesc());
		}
	}