如果'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;
答案 0 :(得分:1)
在null
构造函数的上下文中,您猜测TaskException's
的含糊不清是正确的。
您可能想尝试致电:
new TaskException(TaskException.MANDATORY_FIELD, new Object[] {messageString})