0
在Eclipse + AJDT中,我實現了一個方法註釋來檢查授權如下。Eclipse誤解異常拋出方面
譯註:
@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的快樂,它工作得很好。但是,每次調用warn()
就讓Eclipse閉嘴是非常難看的。
有什麼可以做得更好?這是一個簡單的Eclipse錯誤?
恐怕我需要它來進行檢查。你提到似乎並沒有得到真正的與我的問題的錯誤... – vektor
所以你在Eclipse方面正在編制的是什麼?你沒有得到一個錯誤,說'不能拋出檢查異常...'? – ramsinb
是的,我的方面在Eclipse中編譯得很好。 – vektor