我的問題是否有任何方法來實現一個像printStackTrace()
那樣工作的方法確實如此,我不知道該如何開始這樣做,這可能嗎? 是getStackTrace()
對我來說是個不錯的選擇。在java中模仿printStackTrace()方法
0
A
回答
2
下面是官方的方式是如何做的(grepcode格式):
646 privatevoid printStackTrace(PrintStreamOrWriter s) {
647 // Guard against malicious overrides of Throwable.equals by
648 // using a Set with identity equality semantics.
649 Set < Throwable > dejaVu =
650 Collections. newSetFromMap (newIdentityHashMap < Throwable , Boolean >());
651 dejaVu. add (this);
653 synchronized (s. lock()) {
654 // Print our stack trace
655 s. println (this);
656 StackTraceElement [] trace = getOurStackTrace();
657 for (StackTraceElement traceElement : trace)
658 s. println ("\tat " + traceElement);
660 // Print suppressed exceptions, if any
661 for (Throwable se : getSuppressed())
662 se. printEnclosedStackTrace (s, trace, SUPPRESSED_CAPTION, "\t", dejaVu);
664 // Print cause, if any
665 Throwable ourCause = getCause();
666 if (ourCause != null)
667 ourCause. printEnclosedStackTrace (s, trace, CAUSE_CAPTION, "", dejaVu);
668 }
669 }
多一點關注的處理比你照理,但你可以很容易地刪除任何你不關心關於。
1
如果你想獲得任何時刻的堆棧跟蹤,你可以試試這個:
Thread.currentThread().getStackTrace();// this return an array of StackTraceElement loop over in order to print them.
,或者如果你只是想獲得的情況下,異常的堆棧跟蹤,只需使用ExceptionUtils
從apache common
庫。
ExceptionUtils.getFullStackTrace(ex);
1
你可以在Throwable
類的幫助下做到這一點。請參閱下面的代碼:
該方法返回堆棧跟蹤。
public String tracePoint()
{
String trace = "";
Throwable t = new Throwable();
StackTraceElement[] s = t.getStackTrace();
for(int i=0; i<s.length; i++)
{
trace += s[i] + "\n";
}
return trace;
}
相關問題
- 1. jsp中PrintStacktrace()方法的替代方法
- 2. 異常 - printStackTrace(Printwriter s)方法
- 3. Java中printStackTrace()方法的用法是什麼?
- 4. 模仿的方法c#ws2008
- 5. rspec中方法的模仿鏈
- 6. 模仿Java方法聲明的BNF語法
- 7. printStackTrace與Java中的Logger框架
- 8. Java的的printStackTrace(),相當於在python
- 9. Invorking fillInStackTrace方法調用後的printStackTrace方法
- 10. 任何模仿times()的方法C#中的Ruby方法?
- 11. 模仿異常調用DirectoryEntry.Invoke方法
- 12. Ruby - 如何模仿超類方法?
- 13. 一種使hg模仿svn的方法
- 14. 谷歌模仿的ByRef方法
- 15. 在Web窗體中模仿Razor語法
- 16. 如何在我自己的方法中模仿string.Format()?
- 17. 在方法調用時模仿Rspec中的錯誤消息.backtrace
- 18. 在python中模仿成員對象的方法
- 19. 在MatLab中模仿Arduino循環的最有效方法
- 20. 使用Rhino模仿c#中的靜態方法模擬
- 21. 模仿Java中的HTTPRequest和HTTPResponse對象
- 22. Java中的建模和仿真
- 23. appengine上的printStackTrace()
- 24. 模仿在asp.net
- 25. Java方法模擬
- 26. 在javascript中模仿jsonp
- 27. 在asp.net中動態模仿
- 28. 在IIS 7.0中的模仿
- 29. java中方法簽名仿製藥從這個
- 30. Groovy中不執行Java的方法(簽名包括仿製藥)
我相信社區決定是否投票上/下,而不是OP。 – bblincoe
Sysout的每個條目'getStackTrace()'? – sp00m
由於OP沒有顯示任何努力,所以這個問題似乎是無關緊要的。 –