>  기사  >  Java  >  Java 9에서 StackWalker의 각 스택 요소에 어떻게 액세스합니까?

Java 9에서 StackWalker의 각 스택 요소에 어떻게 액세스합니까?

王林
王林앞으로
2023-09-05 11:13:021230검색

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

Java 9에서는 Thread.getStackTrace() 또는 Throwable.getStackTrace() SecurityManager.getClassContext()의 대안으로 StackWalker API 를 도입했습니다. 이 API의 목표는 필요한 스택 프레임을 탐색하고 구체화하여 필요할 때 추가 스택 프레임에 대한 효율적인 지연 액세스를 허용하는 메커니즘입니다.

예외 스택 추적의 각 스택 요소에 액세스해야 하는 경우 Throwable 클래스의 getStackTrace() 메서드를 사용할 수 있습니다. StackTraceElements의 배열을 반환합니다.

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으로 문의하시기 바랍니다. 삭제