Throwable有方法printStackTrace()它打印一個很好的格式化堆棧跟蹤。是否有一些功能可以對StackTraceElement進行相同的操作,例如可以通過調用getAllStackTraces()來獲得?是否有Throwable.printStackTrace()的StackTraceElement []等價物?
public static Map<Thread, StackTraceElement[]> getAllStackTraces()
Throwable有方法printStackTrace()它打印一個很好的格式化堆棧跟蹤。是否有一些功能可以對StackTraceElement進行相同的操作,例如可以通過調用getAllStackTraces()來獲得?是否有Throwable.printStackTrace()的StackTraceElement []等價物?
public static Map<Thread, StackTraceElement[]> getAllStackTraces()
我的問題的關鍵是:有沒有東西已經存在。
AFAIK,no。當然,標準Java SE庫中沒有任何東西可以做到這一點。
(這很容易檢查。去的javadoc頁面StackTraceElement
,並期待在「使用」交叉引用。如果有任何公開的方法來呈現堆元件陣列,它們應該出現在那裏。)
查看StackTraceElement的toString()方法,它將打印出與printStackTrace相同的方法。你只需要連接生成的字符串(數組的foreach元素)。
getAllStackTraces是一個函數,它沒有toString方法。返回的地圖打印的toString函數看起來不像printStackTrace:「{Thread [Reference Handler,10,system] = [Ljava.lang.StackTraceElement; @ b8aff,Thread [Signal Dispatcher,...」 –
對不起意思是StackTraceElement的toString()方法,當然... –
是的,它返回堆棧跟蹤的單個元素。我可以(也可以)從這些手動構建一個字符串。我的問題的重點是:有沒有東西存在。 –