라이브러리

[PHP] Throwable::getTrace - 스택 추적을 가져옵니다.




Throwable::getTrace


`Throwable::getTrace` 메소드는 예외 또는 오류가 발생한 시점의 호출 스택 정보를 반환하는 메소드입니다. 이 메소드는 `Exception` 클래스의 상속 관계에 있는 모든 예외 클래스에서 사용할 수 있습니다.

# 예제 1: 기본적인 사용법


#hostingforum.kr
php

function test() {

    try {

        $a = 1 / 0;

    } catch (DivisionByZeroError $e) {

        echo $e->getTraceAsString();

    }

}



test();



이 예제에서는 `test` 함수 내에서 `1 / 0` 연산을 수행하여 `DivisionByZeroError` 예외를 발생시킵니다. 예외가 발생한 시점의 호출 스택 정보를 출력하기 위해 `getTraceAsString` 메소드를 사용합니다.

# 예제 2: 디버그 정보 출력


#hostingforum.kr
php

function test() {

    try {

        $a = 1 / 0;

    } catch (DivisionByZeroError $e) {

        echo $e->getTraceAsString();

        echo "
";

        echo $e->getTrace();

    }

}



test();



이 예제에서는 `getTrace` 메소드를 사용하여 호출 스택 정보를 배열 형태로 출력합니다. `getTraceAsString` 메소드는 호출 스택 정보를 문자열로 출력합니다.

# 예제 3: 호출 스택 정보 필터링


#hostingforum.kr
php

function test() {

    try {

        $a = 1 / 0;

    } catch (DivisionByZeroError $e) {

        $trace = $e->getTrace();

        foreach ($trace as &$frame) {

            if (isset($frame['file']) && strpos($frame['file'], 'test.php') !== false) {

                unset($frame);

            }

        }

        echo $e->getTraceAsString();

    }

}



test();



이 예제에서는 호출 스택 정보를 필터링하여 `test.php` 파일에 해당하는 호출 스택 정보를 제외합니다.

# 예제 4: 호출 스택 정보 정렬


#hostingforum.kr
php

function test() {

    try {

        $a = 1 / 0;

    } catch (DivisionByZeroError $e) {

        $trace = $e->getTrace();

        usort($trace, function($a, $b) {

            return $a['line'] - $b['line'];

        });

        echo $e->getTraceAsString();

    }

}



test();



이 예제에서는 호출 스택 정보를 정렬하여 호출 스택 정보를 가장 최근에 호출된 함수부터 출력합니다.

결론


`Throwable::getTrace` 메소드는 예외 또는 오류가 발생한 시점의 호출 스택 정보를 반환하는 메소드입니다. 이 메소드는 예외 클래스의 상속 관계에 있는 모든 클래스에서 사용할 수 있습니다. 호출 스택 정보를 필터링, 정렬, 또는 문자열로 출력하는 등 다양한 방법으로 사용할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 152 페이지

검색

게시물 검색