2013-03-30 54 views
17

有没有一种方法可以在没有异常的情况下在Java中打印异常消息?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 
+0

您可以解析异常消息字符串以仅获取您想要的那些部分 –

+2

如果仅使用println和不想使用getMessage方法输出的消息,那么该怎么办? –

+0

您使用'getCause()'获取最内层的异常和'getMessage()',但我不能保证行号不会在那里。这是一个非常不寻常的用例,你能告诉你想做什么吗?如果你只是想为前端输出一个用户友好的消息,那么你就必须定制它,如果它是为开发者设计的 - 整个事情就更加友好。 – TC1

回答

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

输出看起来正确的对我说:

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()可以帮助你。