2012-11-29 36 views
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錯誤?

回答

0

我相信你在這裏的錯誤(https://bugs.eclipse.org/bugs/show_bug.cgi?id=240608),它沒有得到固定,我相信絆倒了。

你是否需要它作爲檢查異常?

+0

恐怕我需要它來進行檢查。你提到似乎並沒有得到真正的與我的問題的錯誤... – vektor

+0

所以你在Eclipse方面正在編制的是什麼?你沒有得到一個錯誤,說'不能拋出檢查異常...'? – ramsinb

+0

是的,我的方面在Eclipse中編譯得很好。 – vektor