라이브러리

[PHP] Exception::getPrevious - 이전 Throwable을 반환합니다.




Exception::getPrevious


PHP 에서 `Exception` 클래스는 `getPrevious()` 메서드를 제공합니다. 이 메서드는 현재 예외의 이전 예외를 반환합니다. 이전 예외는 현재 예외가 발생하기 전에 발생한 예외를 의미합니다.

예제


다음 예제에서는 `getPrevious()` 메서드를 사용하여 이전 예외를 확인하는 방법을 보여줍니다.

#hostingforum.kr
php

try {

    $file = fopen('non_existent_file.txt', 'r');

    if (!$file) {

        throw new Exception('파일을 열 수 없습니다.');

    }

} catch (Exception $e) {

    echo "현재 예외: " . $e->getMessage() . "
";

    $previous = $e->getPrevious();

    if ($previous) {

        echo "이전 예외: " . $previous->getMessage() . "
";

    } else {

        echo "이전 예외가 없습니다.
";

    }

}



이 예제에서는 `fopen()` 함수를 사용하여 존재하지 않는 파일을 열려고 시도합니다. `fopen()` 함수는 파일을 열 수 없을 때 `false`를 반환하므로 `throw` 문을 사용하여 예외를 발생시킵니다. 현재 예외는 "파일을 열 수 없습니다."라는 메시지를 출력하고, 이전 예외를 확인합니다. 이전 예외가 없다면 "이전 예외가 없습니다."라는 메시지를 출력합니다.

예외 체인


`getPrevious()` 메서드는 예외 체인을 따라가며 이전 예외를 찾습니다. 예를 들어, 다음 예제에서는 두 개의 예외가 발생합니다.

#hostingforum.kr
php

try {

    $file = fopen('non_existent_file.txt', 'r');

    if (!$file) {

        throw new Exception('파일을 열 수 없습니다.');

    }

    $data = fread($file, 1024);

    if ($data === false) {

        throw new Exception('파일을 읽을 수 없습니다.');

    }

} catch (Exception $e) {

    echo "현재 예외: " . $e->getMessage() . "
";

    $previous = $e->getPrevious();

    if ($previous) {

        echo "이전 예외: " . $previous->getMessage() . "
";

        $previousPrevious = $previous->getPrevious();

        if ($previousPrevious) {

            echo "이전 예외의 이전 예외: " . $previousPrevious->getMessage() . "
";

        } else {

            echo "이전 예외의 이전 예외가 없습니다.
";

        }

    } else {

        echo "이전 예외가 없습니다.
";

    }

}



이 예제에서는 `fopen()` 함수를 사용하여 존재하지 않는 파일을 열려고 시도하고, `fread()` 함수를 사용하여 파일을 읽으려고 시도합니다. 두 개의 예외가 발생합니다. 현재 예외는 "파일을 읽을 수 없습니다."라는 메시지를 출력하고, 이전 예외를 확인합니다. 이전 예외는 "파일을 열 수 없습니다."라는 메시지를 출력하고, 이전 예외의 이전 예외를 확인합니다. 이전 예외의 이전 예외는 없으므로 "이전 예외의 이전 예외가 없습니다."라는 메시지를 출력합니다.

결론


`Exception::getPrevious()` 메서드는 현재 예외의 이전 예외를 반환합니다. 이전 예외는 현재 예외가 발생하기 전에 발생한 예외를 의미합니다. 예외 체인을 따라가며 이전 예외를 찾을 수 있습니다. 이전 예외가 없다면 "이전 예외가 없습니다."라는 메시지를 출력합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색