0

我有一個靜態的使用方法,我打電話與一些值爲空。Nullpointer例外與可空參數的方法

這裏是我打電話的方法簽名:

public static void logAndDisplayError(@Nullable Shell parentShell, String dialogTitle, String exceptionMessage, @Nullable Exception e, @Nullable Integer statusCode, boolean is1CD) 

這裏是調用方法:

EclipseError.logAndDisplayError(getShell(), "Error Occured On Finish", message, null, null, true); 

裏面的方法,我想提出一個MessageDialog這是造成空指針。

這裏是MessageDialog創建:

MessageDialog dialog = new MessageDialog(parentShell, 
       dialogTitle, 
       MessageDialog.getImage(Dialog.DLG_IMG_MESSAGE_ERROR), 
       getErrorMessage(e.getMessage(), e, statusCode), 
       MessageDialog.ERROR, 
       new String[]{"1CD Help", "Ok"}, 
       1); 

空指針是在此呼叫在MessageDialog存在的:

getErrorMessage(e.getMessage(), e, statusCode) 

所以我們知道,e和的StatusCode爲空。但我在getErrorMessage方法中定義了Nullable ...

private static String getErrorMessage(String exceptionMessage, @Nullable Exception e, @Nullable Integer statusCode) 

爲什麼它會拋出空指針?

而且,這裏是我使用的@Nullable:

org.eclipse.jdt.annotation.Nullable

+3

'e.getMessage()'如果'e'爲'null',將NPE。 – khelwood

+0

@khelwood oh duhhh我打算從方法參數 –

回答

0

正如你看到的,這是一個eclipse註釋,它只是像開發一個小評論。方法將永遠讓你給它一個空參數。

既然你給你的方法很自然的會拋出一個NullPointerException異常

我建議你使用使bean和使用Hibernate驗證用於此目的的空參數。

Hibernate validator是一個bean驗證的實現。

Rg

+0

傳遞exceptionMessage很酷。我會研究這個! –

+0

如果它有幫助,請標記爲其他人的答案。 –

+0

這並沒有解決我的問題。 –