如何將異常的堆棧跟蹤打印到stderr以外的流中?我發現的一種方法是使用getStackTrace()並將整個列表打印到流中。打印異常的堆棧跟蹤
55
A
回答
46
2
的Throwable類提供兩種方法命名printStackTrace
,一個接受一個PrintWriter
,而另一種在一個PrintStream
,輸出堆棧跟蹤給定流。考慮使用其中之一。
56
Throwable.printStackTrace()將替代形式的打印流作爲參數。 http://download.oracle.com/javase/6/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)
E.g.
catch(Exception e) {
e.printStackTrace(System.out);
}
這將打印堆棧跟蹤到標準輸出而不是標準錯誤。
+3
@FranklinYu,問題的關鍵在於他不想打印到stderr,而是打印到另一個任意流。 –
61
不漂亮,但仍然一個解決方案:
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
exception.printStackTrace(printWriter);
printWriter.flush();
String stackTrace = writer.toString();
+3
這就是我所需要的(儘管我覺得它真的很髒!) –
1
out = some stream ...
try
{
}
catch (Exception cause)
{
cause . printStrackTrace (new PrintStream (out)) ;
}
8
2
我有一個與得到的堆棧跟蹤
幫助的方法private static String getStackTrace(Exception ex) {
StringBuffer sb = new StringBuffer(500);
StackTraceElement[] st = ex.getStackTrace();
sb.append(ex.getClass().getName() + ": " + ex.getMessage() + "\n");
for (int i = 0; i < st.length; i++) {
sb.append("\t at " + st[i].toString() + "\n");
}
return sb.toString();
}
相關問題
- 1. 打印堆棧跟蹤元素異常
- 2. Java異常堆棧跟蹤不打印
- 3. 打印堆棧跟蹤
- 4. 打印堆棧跟蹤obfusated
- 5. 異常和堆棧跟蹤
- 6. 異常堆棧跟蹤
- 7. Sammy.js異常堆棧跟蹤
- 8. ScheduledExecutorService的任務拋出異常時不打印堆棧跟蹤
- 9. java - 自動打印堆棧跟蹤未捕獲的異常
- 10. 如何打印異常的堆棧跟蹤在Velocity模板
- 11. 僅在拋出異常時打印堆棧跟蹤
- 12. 如何在自定義異常中打印堆棧跟蹤?
- 13. 打印堆棧跟蹤與異常本身
- 14. 在JavaME中打印異常堆棧跟蹤,用於三星JET
- 15. 打印堆棧跟蹤參數的值
- 16. 如何打印StackOverflowException的堆棧跟蹤
- 17. ASM ByteCode - 異常的堆棧跟蹤
- 18. 異常的空堆棧跟蹤
- 19. 打印堆棧跟蹤到JavaFX中
- 20. Android Log.X不打印堆棧跟蹤
- 21. Log4j不打印堆棧跟蹤
- 22. 在C++(MSVC)打印堆棧跟蹤?
- 23. 在Mingw打印堆棧跟蹤
- 24. 如何打印Groovy堆棧跟蹤?
- 25. 在JSP中打印堆棧跟蹤
- 26. 在arm-linux中打印堆棧跟蹤
- 27. 從C#打印堆棧跟蹤信息
- 28. 使用CORBA時打印堆棧跟蹤
- 29. 打印堆棧跟蹤到文件
- 30. 沒有堆棧跟蹤異常
如果你想獲得異常跟蹤,如字符串可以調用'Trowable(異常),將返回StackTraceElement'對象的數組',你可以結合到一個字符串的方法getStackTrace'(使用的toString方法該對象獲取一條跟蹤線)。 – jcubic