在Eclipse + AJDT中,我实现了一个方法注释来检查授权,如下所示。
注释:
@Retention(RetentionPolicy.RUNTIME)
public @interface Secured {}
方面:
public aspect SecurityCheck {
pointcut checkSecurity(Secured annotation) : execution(@Secured * *.*(..)) && @annotation(annotation);
Object around(Secured annotation) throws PermissionException:
checkSecurity(annotation) {
...
if (...) throw new PermissionException();
...
return proceed(annotation);
}
}
用法:
@Secured
public void someMethod() {}
注释标记应该应用方面的所有方法。 Aspect检查授权并在失败时抛出PermissionException
。
但是,由于它是一个经检查的异常,someMethod()
需要声明它:
@Secured
public void someMethod() throws PermissionException {}
Eclipse不喜欢这样:someMethod()
内部没有任何内容可以抛出PermissionException
,所以它会抱怨。我必须做一个解决方法:
@Secured
public void someMethod() throws PermissionException {
warn();
}
@SuppressWarnings("unused")
public static void warn() throws PermissionException {}
这让Eclipse很开心,而且效果很好。但是,每次只是为了让Eclipse闭嘴而调用warn()
是非常难看的。
可以做得更好吗?这是一个简单的Eclipse bug吗?
答案 0 :(得分:0)
我相信你偶然发现了一个错误(https://bugs.eclipse.org/bugs/show_bug.cgi?id=240608),我相信这个错误没有得到解决。
您是否需要将其作为已检查的例外?