获得未声明的可清除异常而不是我自己的例外

2022-08-31 15:24:03

我有以下代码

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.UndeclaredThrowableExceptionAccessException


答案 1

AccessException是一个已检查的异常,但它是从未在其子句中声明它的方法引发的(实际上 - 从拦截该方法的方面)。这在 Java 中是一种异常情况,因此您的异常被包装在 中,这是未选中的。throwsUndeclaredThrowableException

要按原样获取异常,可以在被您的方面截获的方法的子句中声明它,或者使用另一个未经检查的异常(即 的子类)而不是 。throwsRuntimeExceptionAccessException


答案 2

推荐