Java 9 도입 StackWalker API Thread.getStackTrace()의 대안 또는 Throwable.getStackTrace() 및 SecurityManager.getClassContext() . 이 API는 필요한 경우 추가 스택 프레임에 대한 효율적인 지연 액세스를 허용하는 필수 스택 프레임을 통과하고 구체화하는 메커니즘을 대상으로 합니다.
예외 스택 추적의 각 스택 요소에 액세스해야 하는 경우 getStackTrace()를 사용할 수 있습니다. 던질 수 있는 방법 수업. 배열 을 반환합니다. StackTraceElement.
예시
import java.util.*; // Test1 class class Test1 { public void test() throws Exception { Test2 test2 = new Test2(); test2.test(); } } // Test2 class class Test2 { public void test() throws Exception { System.out.println(1/0); } } // Main class public class StackWalkerTest { public static void main(String args[]) { Test1 test1 = new Test1(); try { test1.test(); } catch(Exception e) { Arrays.stream(e.getStackTrace()).forEach(System.out::println); } } }
출력
Test2.test(StackWalkerTest.java:14) Test1.test(StackWalkerTest.java:7) StackWalkerTest.main(StackWalkerTest.java:23)