1. ホーム
  2. java

[解決済み] 独自の例外ではなくUndeclaredThrowableExceptionを取得する

2022-02-28 23:45:58

質問

私は以下のコードを持っています。

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 .

解決方法は?

AccessException はチェックされた例外ですが、そのメソッドの throws 節から(実際には、そのメソッドをインターセプトするアスペクトから)。これはJavaでは異常な状態なので、あなたの例外は UndeclaredThrowableException のように、チェックが外れています。

例外をそのまま取得するには、その例外を throws 節を使うか、あるいは別のチェックされていない例外 (すなわち RuntimeException の代わりに AccessException .