具有Nullable参数的方法的Nullpointer异常

时间:2015-04-27 14:16:02

标签: java eclipse nullpointerexception eclipse-plugin eclipse-rcp

我有一个静态的util方法,我调用的是一些值为null。

以下是我正在调用的方法签名:

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为null。但是我在getErrorMessage方法中定义了Nullable ...

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

为什么抛出空指针?

此外,这是我正在使用的@Nullable:

org.eclipse.jdt.annotation.Nullable

1 个答案:

答案 0 :(得分:0)

如您所见,它是一个日食注释,它就像对开发人员的一点点评论。方法总是允许你给它一个空参数。

由于您为方法指定了一个空参数,因此抛出 NullPointerException

是很自然的

我建议您使用make bean并使用hibernate验证器来实现此目的。

Hibernate validator是bean验证的实现。

RG