用aop around做了一个日志打印,类似这样:
public Object aroundMapper(ProceedingJoinPoint joinPoint) throws Throwable {
Object obj = null;
...
try{
obj = joinPoint.proceed();
}catch (Throwable t){
...
throw t;
}finally {
...
return obj;
}
}
然后调用方反馈说,调用某个方法的时候返回null,但是该方法是不会返回null的。
然后看了下,基本确定就是这边的问题,其实也简单,就是try块中出现异常,跳转到catch块,按原来设想应该是直接throw异常从而跳出去,但是由于定义了finally块,因此在执行完catch块后,再执行finally块,因此返回了null。
后面修改就是把return语句放到了外面,写try-catch-finally,要多注意finally块是否合理和需要。