> Java > java지도 시간 > Java 9에서 StackWalker의 각 스택 요소에 어떻게 액세스합니까?

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

王林
풀어 주다: 2023-09-05 11:13:02
앞으로
1304명이 탐색했습니다.

如何在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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿