Java 9 引入了StackWalker API 作為Thread.getStackTrace() 或Throwable的替代方案.getStackTrace() 和SecurityManager.getClassContext()。此 API 的目標是一種遍歷和具體化所需堆疊幀的機制,允許在需要時有效地延遲存取其他堆疊幀。
如果我們需要存取異常堆疊追蹤的每個堆疊元素,那麼我們可以使用Throwable類別的getStackTrace()方法。它傳回 StackTraceElement 的陣列。
import java.util.*; <strong>// Test1 class </strong>class Test1 { public void test() throws Exception { Test2 test2 = new Test2(); test2.test(); } } <strong>// Test2 class</strong> class Test2 { public void test() throws Exception { System.out.println(1/0); } } <strong>// Main class</strong> public class StackWalkerTest { public static void main(String args[]) { Test1 test1 = new Test1(); try { test1.test(); } catch(Exception e) { <strong>Arrays.stream</strong>(e.<strong>getStackTrace()</strong>).<strong>forEach</strong>(System.out::println); } } }
<strong>Test2.test(StackWalkerTest.java:14) Test1.test(StackWalkerTest.java:7) StackWalkerTest.main(StackWalkerTest.java:23)</strong>
以上是如何在Java 9中存取StackWalker的每個堆疊元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!