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)