我有以下代码
public Object handlePermission(ProceedingJoinPoint joinPoint, RequirePermission permission) throws AccessException, Throwable { System.out.println("Permission = " + permission.value()); if (user.hasPermission(permission.value())) { System.out.println("Permission granted "); return joinPoint.proceed(); } else { System.out.println("No Permission"); throw new AccessException("Current user does not have required permission"); } }
当我使用没有权限的用户时,我得到的java.lang.reflect.UndeclaredThrowableException不是AccessException。
java.lang.reflect.UndeclaredThrowableException
AccessException
AccessException是一个已检查的异常,但它是从未在其throws子句中声明的方法抛出的(实际上是从拦截该方法的方面)。这是Java中的异常情况,因此您的异常用包裹了UndeclaredThrowableException,并且未经检查。
throws
UndeclaredThrowableException
要按原样获取您的异常,您可以在throws方面所拦截的方法的子句中声明它,也可以使用另一个未经检查的异常(即的子类RuntimeException)代替AccessException。
RuntimeException