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 중국어 웹사이트의 기타 관련 기사를 참조하세요!