这是一个在Service层自定义的异常,用于将Service层的异常进行包装,再往高层抛出(如Action层)
public class BusinessException extends Exception{ public BusinessException(String msg, Throwable ex){ super(msg, ex); } public BusinessException(String msg){ super(msg); } public BusinessException(Throwable ex){ super(ex); } }
AOP相关代码如下:/** 向Service层织入"异常捕获及抛出, 并记录日志 " */ @Around(value = "serviceCall() && @annotation(buss)") public Object serviceInterceptor(ProceedingJoinPoint pj, BusinessLog buss) throws Throwable { Object object = null; try { object = pj.proceed(); } catch (Exception e) { log.error("***Error: ", e); if (buss != null) { /** 抛出重新包装的Exception */ throw new BusinessException(buss.exMsg(), e); } else throw e; } return object; }
原本是想在Service捕获到异常后,先进行日志记录,而后再将友有的异常信息抛出以方便高层捕获并显示相关信息到用户界面。
实际运行过程中,日志信息是正常记录了,但有个地方出现了点小问题。