개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.08 16:23

Error::getTrace에 대한 질문 내용

목록
  • 코드주술사 오래 전 2025.06.08 16:23 인기
  • 116
    1
제가 현재 PHP를 공부중인데, Error::getTrace를 사용하여 에러의 호출 스택을 얻는 방법에 대해 궁금합니다.

에러가 발생했을 때, 에러의 호출 스택을 얻기 위해 `Error::getTrace()`를 사용할 수 있다고 들었는데, 이 메서드는 어떻게 작동하는지 궁금합니다.

예를 들어, 다음 코드가 있다고 가정해 보겠습니다.

php

function a() {

    b();

}



function b() {

    c();

}



function c() {

    throw new Exception('테스트');

}



try {

    a();

} catch (Exception $e) {

    $trace = $e->getTrace();

    print_r($trace);

}



위 코드에서 `Exception`이 발생했을 때, `$e->getTrace()`를 호출하여 에러의 호출 스택을 얻을 수 있나요?

그리고 `$e->getTrace()`의 결과는 어떤 형태의 데이터인 건가요?

위 코드에서 `$e->getTrace()`의 결과를 출력한 결과는 다음과 같습니다.

php

Array

(

    [0] => Array

        (

            [file] => /Users/user/Documents/test.php

            [line] => 12

            [function] => c

            [args] => Array

                (

                )



        )



    [1] => Array

        (

            [file] => /Users/user/Documents/test.php

            [line] => 8

            [function] => b

            [args] => Array

                (

                )



        )



    [2] => Array

        (

            [file] => /Users/user/Documents/test.php

            [line] => 4

            [function] => a

            [args] => Array

                (

                )



        )



)



위 결과에서 각 배열 요소는 어떤 의미를 나타내나요?

위 결과에서 `[file]`은 어떤 파일에 해당하는 건가요?

위 결과에서 `[line]`은 어떤 줄에 해당하는 건가요?

위 결과에서 `[function]`은 어떤 함수에 해당하는 건가요?

위 결과에서 `[args]`은 어떤 의미를 나타내나요?

위 결과에서 각 배열 요소는 어떻게 사용할 수 있나요?


    댓글목록

    profile_image
    나우호스팅  오래 전



    Error::getTrace() 메서드는 PHP에서 에러의 호출 스택을 얻는 데 사용됩니다. 이 메서드는 Exception 객체의 getTrace() 메서드를 호출하여 에러의 호출 스택을 얻을 수 있습니다.

    예를 들어, 다음 코드가 있다고 가정해 보겠습니다.

    #hostingforum.kr
    php
    
    function a() {
    
        b();
    
    }
    
    
    
    function b() {
    
        c();
    
    }
    
    
    
    function c() {
    
        throw new Exception('테스트');
    
    }
    
    
    
    try {
    
        a();
    
    } catch (Exception $e) {
    
        $trace = $e->getTrace();
    
        print_r($trace);
    
    }
    
    


    위 코드에서 Exception이 발생했을 때, $e->getTrace()를 호출하여 에러의 호출 스택을 얻을 수 있습니다. $e->getTrace()의 결과는 다음과 같은 형태의 데이터입니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [0] => Array
    
            (
    
                [file] => /Users/user/Documents/test.php
    
                [line] => 12
    
                [function] => c
    
                [args] => Array
    
                    (
    
                    )
    
    
    
            )
    
    
    
        [1] => Array
    
            (
    
                [file] => /Users/user/Documents/test.php
    
                [line] => 8
    
                [function] => b
    
                [args] => Array
    
                    (
    
                    )
    
    
    
            )
    
    
    
        [2] => Array
    
            (
    
                [file] => /Users/user/Documents/test.php
    
                [line] => 4
    
                [function] => a
    
                [args] => Array
    
                    (
    
                    )
    
    
    
            )
    
    
    
    )
    
    


    위 결과에서 각 배열 요소는 다음과 같은 의미를 나타냅니다.

    - `[file]`: 에러가 발생한 파일의 경로입니다.
    - `[line]`: 에러가 발생한 줄 번호입니다.
    - `[function]`: 에러가 발생한 함수 이름입니다.
    - `[args]`: 함수에 전달된 인자의 목록입니다.

    위 결과에서 각 배열 요소는 다음과 같이 사용할 수 있습니다.

    - `[file]`을 사용하여 에러가 발생한 파일의 경로를 확인할 수 있습니다.
    - `[line]`을 사용하여 에러가 발생한 줄 번호를 확인할 수 있습니다.
    - `[function]`을 사용하여 에러가 발생한 함수 이름을 확인할 수 있습니다.
    - `[args]`을 사용하여 함수에 전달된 인자의 목록을 확인할 수 있습니다.

    위 결과에서 각 배열 요소는 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    foreach ($trace as $item) {
    
        echo "파일: " . $item['file'] . "n";
    
        echo "줄 번호: " . $item['line'] . "n";
    
        echo "함수 이름: " . $item['function'] . "n";
    
        echo "인자 목록: " . print_r($item['args'], true) . "n";
    
    }
    
    


    위 코드는 에러의 호출 스택을 확인할 수 있습니다.

    2025-06-08 16:24

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,279건 / 74 페이지

검색

게시물 검색