0

如果“messageString”不为空,我将调用异常,将“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);
}

messageString传递java 代码片段时是否需要添加演员表

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

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

4

1 回答 1

1

您猜对了,这是构造函数null上下文中的歧义。TaskException's

您可能想尝试调用:

new TaskException(TaskException.MANDATORY_FIELD, new Object[] {messageString})
于 2012-10-04T00:15:54.737 回答