将null作为参数传递给函数时的运行时异常

时间:2012-10-03 23:50:12

标签: java runtime-error

如果'messageString'不为null,我调用一个Exception,将'messageString'作为参数传递,如下所示

if (messageString !=null) {
  throw new org.jaffa.exceptions.ApplicationExceptions(
    new com.mirotechnologies.task.core.domain.exceptions.TaskException(
        com.mirotechnologies.task.core.domain.exceptions.TaskException.MANDATORY_FIELD, 
        messageString
    )
  );     
}

(我必须编写类的完整路径,因为它内部的AOP片段)

如果messageString不是null,它可以正常显示消息。

但是当它是null时,它实际上是在例外

处抛出运行时错误
undefined argument 'messageString' at : throw new org.jaffa.exceptions.ApplicationExceptions(new com.mirotechnologies.task.core.domain.exceptions.TaskException(com.mirotechnologies.task.core.domain.exceptions.TaskException.MANDATORY_FIELD, messageString)); 

不能调试这个,因为它内部的AOP,也不确定为什么它进入循环内部,如果它的null - 可能是它对TaskException构造函数的模糊null参数的编译器问题?

这是TaskException

中的构造函数声明
public TaskException(String propertyName, Object parameter0) {
        this(propertyName, new Object[] {parameter0});
}

public TaskException(String propertyName, Object[] parameters) {
        super(propertyName, parameters);
}

在java片段

中传递messageString时是否需要添加强制转换

更新:我在抛出异常时添加了一个强制转换(Object)messageString,它现在抛出错误无法将'void'值强制转换为java.lang.Object - 再次为什么它'无效',不应该因为messageString为空而不进入循环?

最初,第一行声明为java.lang.String messageString = null;

1 个答案:

答案 0 :(得分:1)

null构造函数的上下文中,您猜测TaskException's的含糊不清是正确的。

您可能想尝试致电:

new TaskException(TaskException.MANDATORY_FIELD, new Object[] {messageString})