Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse误解了异常抛出方面_Java_Eclipse_Annotations_Aspectj - Fatal编程技术网

Java Eclipse误解了异常抛出方面

Java Eclipse误解了异常抛出方面,java,eclipse,annotations,aspectj,Java,Eclipse,Annotations,Aspectj,在Eclipse+AJDT中,我实现了一个方法注释来检查授权,如下所示 注释: @Retention(RetentionPolicy.RUNTIME) public @interface Secured {} 方面: public aspect SecurityCheck { pointcut checkSecurity(Secured annotation) : execution(@Secured * *.*(..)) && @annotation(annotation

在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() {}
注释标记了应用方面的所有方法。方面检查授权并在失败时抛出
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很开心,而且工作得很好。然而,每次调用
warn()
只是为了让Eclipse闭嘴,这是非常难看的


还有什么可以做得更好?这是一个简单的Eclipse错误吗?

我相信您偶然发现了一个错误(https://bugs.eclipse.org/bugs/show_bug.cgi?id=240608)我相信这里没有修好


是否需要将其作为选中的异常

恐怕我需要检查一下。您提到的bug似乎与我的问题没有太大关系……所以您认为Eclipse中的aspect是按原样编译的?您没有收到一个错误,该错误表示
无法抛出选中的异常…
?是的,我的方面在Eclipse中编译得很好。抱歉,我无法帮助我的方面使用选中的异常,请不要按照您的方式在Eclipse中编译。