From 3fdfe356bd94040c3d4204fe90a36b7b67adea2e Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 12 Oct 2023 21:00:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Daop=E7=9A=84afterException?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aop/engine/spring/SpringCglibInterceptor.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibInterceptor.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibInterceptor.java index 0c42bb582..c0f5ab31c 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibInterceptor.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibInterceptor.java @@ -12,6 +12,7 @@ package org.dromara.hutool.extra.aop.engine.spring; +import org.dromara.hutool.core.exception.ExceptionUtil; import org.dromara.hutool.extra.aop.Aspect; import org.dromara.hutool.extra.aop.SimpleInterceptor; import org.springframework.cglib.proxy.MethodInterceptor; @@ -47,10 +48,15 @@ public class SpringCglibInterceptor extends SimpleInterceptor implements MethodI if (aspect.before(target, method, args)) { try { result = proxy.invoke(target, args); - } catch (final InvocationTargetException e) { + } catch (final Throwable e) { + Throwable throwable = e; + if(throwable instanceof InvocationTargetException){ + throwable = ((InvocationTargetException) throwable).getTargetException(); + } + // 异常回调(只捕获业务代码导致的异常,而非反射导致的异常) - if (aspect.afterException(target, method, args, e.getTargetException())) { - throw e; + if (aspect.afterException(target, method, args, throwable)) { + throw throwable; } } }