23

有没有办法在没有异常的情况下在 Java 中打印异常消息?

当我尝试以下代码时:

try {
    // statements
} catch (javax.script.ScriptException ex) {
    System.out.println(ex.getMessage());
}

输出是:

Invalid JavaScript code: sun.org.mozilla.javascript.internal.EvaluatorException:
missing } after property list (<Unknown source>) in <Unknown source>; 
at line number 1

有没有办法打印没有异常信息、来源和行号信息的消息。换句话说,我想在输出中打印的消息是:

missing } after property list
4

3 回答 3

24

输出对我来说是正确的:

Invalid JavaScript code: sun.org.mozilla.javascript.internal.EvaluatorException: missing } after property list (<Unknown source>) in <Unknown source>; at line number 1

我认为Invalid Javascript code: ..是异常消息的开始。

通常堆栈跟踪不会与消息一起返回:

try {
    throw new RuntimeException("hu?\ntrace-line1\ntrace-line2");
} catch (Exception e) {
    System.out.println(e.getMessage()); // prints "hu?"
}

因此,您调用的代码可能会捕获异常并重新抛出ScriptException. 在这种情况下,也许e.getCause().getMessage()可以帮助你。

于 2013-03-30T19:58:21.817 回答
0

在 Java 中,有三种方法可以打印异常信息。

1. java.lang.Throwable.printStackTrace() 方法

e.printStackTrace();

2.toString() 方法:

catch (Exception e)
        {
            System.out.println(e.toString());
        }

3. java.lang.Throwable.getMessage() 方法

catch (Exception e)
        {
            System.out.println(e.getMessage());
              
        }
于 2021-10-08T11:14:59.087 回答
-11
try {
} catch (javax.script.ScriptException ex) {
// System.out.println(ex.getMessage());
}
于 2013-03-30T19:52:10.920 回答