728x90

fillInStackTrace 정의

public Throwable fillInStackTrace()

 

  • 이 메서드는 Throwable 클래스에 정의되어 있으며, 모든 예외 클래스(Exception, Error)의 부모 클래스이기 때문에 예외 관련 객체에서 사용할 수 있습니다.
  • fillInStackTrace()를 호출하면 현재 위치에서의 스택 트레이스를 다시 기록합니다.
  • 일반적으로 예외를 재사용하거나, 예외를 다른 형태로 변환할 때 사용됩니다.
public class Example {
    public static void main(String[] args) {
        try {
            throwException();
        } catch (Exception e) {
            e.fillInStackTrace(); // 현재 스택 트레이스로 덮어씀
            e.printStackTrace();  // 덮어쓴 스택 트레이스를 출력
        }
    }

    static void throwException() throws Exception {
        throw new Exception("예외 발생!");
    }
}

사용 시 주의사항

  • fillInStackTrace()는 비용이 비쌀 수 있음 (스택 정보를 새로 생성).
  • 대부분의 경우, 이 메서드를 직접 호출할 필요는 없습니다.
  • 예외를 wrap할 때나, 커스텀 예외 처리에서 스택 트레이스를 재설정하고 싶을 때 사용됩니다.

 

fillInStackTrace를 통하여 스택트레이스를 제거하는 방법

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }

    @Override
    public synchronized Throwable fillInStackTrace() {
        return this; // 스택 트레이스 무시
    }
}
728x90

'Programming > JAVA' 카테고리의 다른 글

JAVA JCA(Java Cryptography Architecture)의 개념  (0) 2025.04.21

+ Recent posts