首頁 >Java >java教程 >如何在Java 9中存取StackWalker的每個堆疊元素?

如何在Java 9中存取StackWalker的每個堆疊元素?

王林
王林轉載
2023-09-05 11:13:021285瀏覽

如何在Java 9中访问StackWalker的每个堆栈元素?

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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除