JAVA

e.printStackTrace()

lshjju 2025. 8. 21. 13:32

e.printStackTrace()는 자바에서 예외(Exception)가 발생했을 때 예외의 **호출 스택(Call Stack)**을 콘솔에 출력하는 메서드입니다.

 

이 스택 추적(stack trace)은 예외가 어디서, 어떤 순서로 발생했는지 상세하게 보여주기 때문에 개발자가 오류의 원인을 파악하고 디버깅하는 데 매우 중요한 역할을 합니다.



역할 및 구성 요소


printStackTrace()가 출력하는 정보는 다음과 같은 세 가지 주요 부분으로 구성됩니다.

예외 타입 및 메시지: 

발생한 예외가 무엇인지, 그리고 예외에 대한 간단한 설명(e.getMessage()와 동일)을 보여줍니다. 

예를 들어, java.lang.NullPointerException와 같이 표시됩니다.

호출 스택: 

예외가 발생하기까지 메서드가 호출된 순서를 위에서부터 아래로 나열합니다. 

가장 위에 있는 줄이 예외가 직접 발생한 곳이고, 아래로 갈수록 그 메서드를 호출한 메서드, 그리고 또 그 메서드를 호출한 메서드... 순으로 거슬러 올라갑니다.

파일 이름 및 라인 번호: 

각 호출 스택 줄에는 예외가 발생한 클래스 파일, 메서드, 그리고 정확한 소스 코드의 라인 번호가 함께 표시됩니다.



사용 예시

public class MyClass {
    public void methodA() {
        methodB();
    }

    public void methodB() {
        methodC();
    }

    public void methodC() {
        // 이 곳에서 NullPointerException이 발생했다고 가정
        String s = null;
        System.out.println(s.length()); // 여기서 예외 발생!
    }

    public static void main(String[] args) {
        try {
            new MyClass().methodA();
        } catch (Exception e) {
            // 예외가 발생하면 이곳으로 넘어와서
            e.printStackTrace(); // 호출 스택을 출력합니다.
        }
    }
}


Java

위 코드를 실행하면 다음과 비슷한 출력이 콘솔에 나타납니다.

 

java.lang.NullPointerException
    at com.mysite.sbb.user.MyClass.methodC(MyClass.java:12)
    at com.mysite.sbb.user.MyClass.methodB(MyClass.java:8)
    at com.mysite.sbb.user.MyClass.methodA(MyClass.java:4)
    at com.mysite.sbb.user.MyClass.main(MyClass.java:18)


Plaintext

이 출력 결과를 보면 main 메서드에서 methodA를 호출하고, methodA가 methodB를, methodB가 methodC를 호출했는데, 최종적으로 MyClass.java 파일의 12번째 줄에 있는 methodC에서 NullPointerException이 발생했음을 한눈에 알 수 있습니다.



결론적으로, 

 

e.printStackTrace()는 개발 단계에서 오류의 정확한 위치와 원인을 파악하는 데 필수적인 디버깅 도구입니다. 

하지만 사용자에게 직접 보여주는 용도로는 적합하지 않으며, 운영 환경에서는 보통 로그 파일에 기록하여 관리합니다.


 

'JAVA' 카테고리의 다른 글

JAVA Comments  (2) 2025.08.27
JVM  (0) 2025.08.27
Getter Setter  (0) 2025.08.25
Sort object  (0) 2025.08.19
JPA  (0) 2025.08.14