Java Throwable getMessage()的奇怪输出

Java Throwable getMessage()的奇怪输出,java,exception,Java,Exception,嗨,我有下面的伪代码,抛出一个类似这样的异常 throw new MyException("Bad thing happened","com.stuff.errorCode"); 其中MyException扩展了异常类。下面是我如何处理异常的 ActionMessages errors = new ActionMessages(); if(ex.getErrorCode() != null && !"".equals(ex.getErrorCode())) error = n

嗨,我有下面的伪代码,抛出一个类似这样的异常

throw new MyException("Bad thing happened","com.stuff.errorCode");
其中MyException扩展了异常类。下面是我如何处理异常的

 ActionMessages errors = new ActionMessages();
if(ex.getErrorCode() != null && !"".equals(ex.getErrorCode()))
error = new ActionMessage(ex.getErrorCode()); // com.stuff.errorCode is the errorCode
else
error = new ActionMessage(ex.getMessage()); //"Bad thing happened" is error message
errors.add(ActionMessages.GLOBAL_MESSAGE, error);
//errors.add(Globals.MESSAGE_KEY, error );
saveErrors( requ, errors );
return (mapping.findForward(nextScreen));
现在,在用户屏幕上,消息显示为

发生了什么坏事


我正在使用Struts 1.2.4,我正在研究它的源代码,但任何指针都将非常感谢。

Java正在寻找包含错误消息本地化版本的应用程序资源

这就是为什么???恩?我们???事情是这样的。出于某种原因,它认为您正在引用一个关键的“坏事情发生了”,并且正在查找本地化(即翻译的)消息

为什么?


还不确定。你能把你的整个
MyException
课程发出来吗?

编辑:这个答案是在问题发生实质性变化之前写的

“en_US”必须来自其他地方(可能是用于打印消息的web框架),因为
Exception
本身不进行任何查找

编译此代码:

public class MyException extends Exception {
  public MyException(String msg, String sErrorCode) {
    super(msg);
    // ignore sErrorCode
  }
}

public class MyExceptionTest {
  public static void main(String[] args) {
    System.out.println(new MyException("foo", "bar").getMessage());
  }
}

然后运行
MyExceptionTest
,您将看到一个简单的“foo”作为输出(正如预期的那样)。

为了避免
ActionMessage
试图将文字消息解释为关键用法:


布尔值
参数指定
字符串
参数将被解释为要查找的代码(
)或文字消息(
)。

是的。我之前得到了错误的流。我已使用正确的详细信息修改了问题。假设默认情况下它为false,则对于错误=new ActionMessage(例如getErrorCode())应该可以正常工作,因为我在ApplicationResources.properties中为此错误代码设置了正确的消息?
error = new ActionMessage(ex.getMessage(), false);