2013-03-30 55 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()可以幫助你。