如何在 Java 9 中訪問 StackWalker 的每個堆疊元素?
Java 9 引入了 StackWalker API 作為 Thread.getStackTrace() 或 Throwable.getStackTrace() 和 SecurityManager.getClassContext() 的替代方案。此 API 針對遍歷和實現所需堆疊框架的機制,從而允許在需要時高效地延遲訪問更多堆疊框架。
如果我們需要訪問異常堆疊跟蹤的每個堆疊元素,則可以使用 Throwable 類的 getStackTrace() 方法。它返回一個 StackTraceElement 陣列 。
示例
import java.util.*;
// Test1 class
class Test1 {
public void test() throws Exception {
Test2 test2 = new Test2();
test2.test();
}
}
// Test2 class
class Test2 {
public void test() throws Exception {
System.out.println(1/0);
}
}
// Main class
public class StackWalkerTest {
public static void main(String args[]) {
Test1 test1 = new Test1();
try {
test1.test();
} catch(Exception e) {
Arrays.stream(e.getStackTrace()).forEach(System.out::println);
}
}
}輸出
Test2.test(StackWalkerTest.java:14) Test1.test(StackWalkerTest.java:7) StackWalkerTest.main(StackWalkerTest.java:23)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP