StackWalker — 스택 워커 클래스

StackWalker — 스택 워커 클래스

StackWalker는 스택을 탐색(walk)하는 도구예요. walk 메서드는 현재 스레드의 StackFrame 순차 스트림을 열고, 주어진 함수를 적용해 StackFrame 스트림을 탐색해요. 스트림은 스택의 맨 위(스택이 생성된 실행 지점)부터 맨 아래까지 순서대로 스택 프레임 요소를 보고해요. walk 메서드가 반환되면 StackFrame 스트림은 닫혀요. 닫힌 스트림을 재사용하려 하면 IllegalStateException이 던져져요. StackWalker의 스택 워킹 옵션은 반환될 StackFrame 객체의 정보를 결정해요.

출처: Java API Reference

본문

public static StackWalker getInstance() — 기본 옵션으로 StackWalker 인스턴스를 반환해요.

public static StackWalker getInstance(StackWalker.Option option) — 지정된 단일 옵션으로 StackWalker 인스턴스를 반환해요.

public static StackWalker getInstance(Set<StackWalker.Option> options) — 지정된 옵션 집합으로 StackWalker 인스턴스를 반환해요.

public static StackWalker getInstance(Set<StackWalker.Option> options, Predicate<Class<?>> filter) — 지정된 옵션과 클래스 필터로 StackWalker 인스턴스를 반환해요.

public <T> T walk(Function<? super Stream<StackWalker.StackFrame>, ? extends T> function) — 현재 스레드의 스택 프레임 스트림을 열어 주어진 함수를 적용하고 그 결과를 반환해요. 함수가 반환되면 스트림이 닫혀요. 이 메서드가 스택 프레임 스트림을 안전하게 탐색하는 권장 방식이에요.

public void forEach(Consumer<? super StackWalker.StackFrame> action) — 현재 스레드의 각 스택 프레임에 대해 주어진 액션을 수행해요.

public Class<?> getCallerClass()getCallerClass()를 호출한 메서드의 호출자 클래스를 반환해요. 이 옵션(RETAIN_CLASS_REFERENCE)이 켜진 StackWalker에서만 사용할 수 있어요.

SHOW_HIDDEN_FRAMES, SHOW_REFLECT_FRAMES, RETAIN_CLASS_REFERENCE 같은 Option을 조합해 스택 탐색 동작을 제어할 수 있어요. Thread.getAllStackTraces()보다 가볍고 안전하게 현재 스택을 탐색하는 용도로 사용돼요.

더 알아보기 (Learn more)