首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Throwable getMessage()的奇怪输出

Throwable getMessage()的奇怪输出
EN

Stack Overflow用户
提问于 2010-03-12 12:17:26
回答 3查看 478关注 0票数 2

嗨,我有下面的伪代码,并抛出这样的异常

代码语言:javascript
复制
throw new MyException("Bad thing happened","com.stuff.errorCode");

其中MyException扩展了异常类。下面是我处理异常的方法

代码语言:javascript
复制
 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));

现在,在用户屏幕上,消息显示为

发生了???en_US.Bad事件?

我正在使用Struts1.2.4,我正在查看它的源代码,但是任何指针都会非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-12 13:15:58

要避免ActionMessage试图将文字消息解释为键,请使用这个构造函数

代码语言:javascript
复制
error = new ActionMessage(ex.getMessage(), false);

boolean参数指定String参数将被解释为要查找的代码(true)还是文本消息(false)。

票数 1
EN

Stack Overflow用户

发布于 2010-03-12 12:31:50

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

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

编译以下代码:

代码语言:javascript
复制
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“作为输出(正如预期的那样)。

票数 2
EN

Stack Overflow用户

发布于 2010-03-12 12:26:39

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

这就是???en_US?事情是关于。出于某种原因,它认为您正在引用一个关键的“发生了不好的事情”,并正在寻找本地化(即翻译)消息。

为什么?

还不确定。你能把你所有的MyException课程都贴出来吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2432587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档