在实际开发过程中,我们可能会记录请求参数,返回参数值,以及接入第三方组件进行业务的监控等等,这些请求,都可能有异常,此时,需要通过try/catch 将,异常进行捕获并记录,而不要影响已有的业务。
举个例子:
@Before("log()") public void doBefore(JoinPoint joinPoint) { try { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String uri = request.getRequestURI(); if (StringUtils.isNotBlank(uri)) { Cat.logMetricForCount(RestFulURIUtil.getRestFulURI(uri)); // 统计所有请求的访问次数 } } catch (Exception e) { //辅助业务功能不能影响到主业务,必须进行异常捕获 log.error("error is:{}.", e); } }
上述的代码中,我将业务的请求接入监控中,而对于第三方Cat我们认为是不可靠的,比如:Cat.logMetricForCount()函数可能报异常,此时,通过try/catch进行捕获,不会影响正常业务的执行。