代码之家  ›  专栏  ›  技术社区  ›  Ravi Gupta

throwable getmessage()的奇怪输出

  •  2
  • Ravi Gupta  · 技术社区  · 16 年前

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

    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));
    

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

    是吗?你说什么?发生了什么坏事?你说什么?

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

    3 回复  |  直到 14 年前
        1
  •  1
  •   Joachim Sauer    16 年前

    避免 ActionMessage 试图将文本消息解释为一个键用法 this constructor :

    error = new ActionMessage(ex.getMessage(), false);
    

    这个 boolean 参数指定 String 参数将被解释为要查找的代码( true )或者作为文字信息( false )

        2
  •  2
  •   Joachim Sauer    16 年前

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

    “?”???“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”作为输出(如预期)。

        3
  •  0
  •   Timothy    16 年前

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

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

    为什么?

    还不确定。你能把你的全部贴出来吗 MyException 班级?