[꼼꼼한 개발자] 꼼코더

[JAVA] - 스택 트레이스(Stack Trace)란? 간단하고 쉽게 이해하기 본문

간단하고 쉽게/JAVA

[JAVA] - 스택 트레이스(Stack Trace)란? 간단하고 쉽게 이해하기

꼼코더 2023. 5. 22. 22:23
반응형

 

🤷🏻 스택 트레이스(Stack Trace)란?

- 프로그램의 실행 과정에서 호출된 메서드들의 순서와 위치 정보를 나타내는 것.

 

스택 트레이스는 일반적으로 예외가 발생했을 때

예외가 발생한 지점부터 호출 스택의 상위 메서드들까지의 정보를 담고 있다.

 

👍🏻 장점

- 스택 트레이스는 예외가 발생한 원인을 추적하고 디버깅하는 데 매우 유용하다.

 

예외가 발생한 위치와 호출된 메소드들의 순서를 통해 프로그램의 실행 흐름을 파악할 수 있고

이를 통해 문제의 원인을 분석하고 해결할 수 있다.

 


✌🏻 사용방법 (2가지)

  1. try-catch 구문 사용함
    • 스택 트레이스는 보통 예외 객체의 printStackTrace() 메서드를 호출하여 출력할 수 있다.
    • ex) e.printStackTrace();
  2. try-catch 구문 사용안함
    • 예외가 발생하면 자바는 예외를 기본적으로 처리하지 않고 프로그램 실행을 중단, 그 과정에서 예외의 스택 트레이스 정보가 출력
    • 하지만 오류 발생 지점과 호출 경로를 파악하기 어려워 디버깅과 오류 분석에 제한이 생기게 된다.

 

출력된 스택 트레이스는 예외가 발생한 지점부터 호출 스택의 상위 메서드들까지의 정보를 담고 있으며,

메서드의 이름, 클래스명, 파일명, 라인 번호 등의 정보를 포함한다.

 

 


🧑🏻‍💻 사용 예제와 결과(try-catch 구문 사용)

try-catch 구문 사용하여 코드를 작성하고 스택 트레이스를 확인해 보자.

 

public class Example {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0); // 0으로 나누는 작업을 시도
            System.out.println("결과: " + result);
        } catch (ArithmeticException e) {
            System.out.println("0으로 나눌 수 없습니다.");
            e.printStackTrace(); // 스택 트레이스 출력
        }
    }
    
    public static int divide(int num1, int num2) {
        return num1 / num2; // 0으로 나누기 예외 발생
    }
}

 

💡 실행 결과

NullPointerException이 발생했습니다.
java.lang.NullPointerException
    at com.example.Example.myMethod(Example.java:13)
    at com.example.Example.main(Example.java:6)

 

 

 

 

 

 

 

 

 

 

Comments