> 백엔드 개발 > PHP 튜토리얼 > PHP 단순 예외 처리 및 중첩 예외

PHP 단순 예외 처리 및 중첩 예외

伊谢尔伦
풀어 주다: 2016-11-23 09:15:16
원래의
2114명이 탐색했습니다.

PHP 5에는 다른 언어와 유사한 예외 처리 모듈이 추가되었습니다. PHP 코드에서 생성된 예외는 throw 문에 의해 발생되고 catch 문에 의해 포착될 수 있습니다. 예외 처리가 필요한 코드는 가능한 예외를 포착하기 위해 try 코드 블록에 배치되어야 합니다. 각 시도에는 해당 캐치가 하나 이상 있어야 합니다. 다양한 클래스에서 생성된 예외를 포착하려면 여러 catch를 사용하세요. try 코드 블록이 더 이상 예외를 발생시키지 않거나 발생한 예외와 일치하는 catch가 발견되지 않으면 PHP 코드는 마지막 catch로 점프한 후 계속 실행됩니다. 물론, PHP는 catch 블록 내에서 예외가 다시 발생하도록 허용합니다.

예외가 발생하면 후속 코드(번역자 주: 예외가 발생했을 때의 코드 블록을 나타냄)는 계속 실행되지 않으며 PHP는 일치할 수 있는 첫 번째 코드를 찾으려고 시도합니다. 잡다. 예외가 포착되지 않고 해당 처리를 위해 set_Exception_handler()를 사용할 필요가 없으면 PHP는 심각한 오류를 생성하고 Uncaught Exception...(uncaught 예외) 프롬프트 메시지를 출력합니다.

HP 내부 기능은 주로 오류 보고를 사용하며 최신 객체 지향 확장에서만 예외를 사용합니다. 그러나 오류는 ErrorException을 통해 쉽게 예외로 변환될 수 있습니다.

PHP 표준 라이브러리(SPL)는 다양한 내장 예외 클래스를 제공합니다.

예제 #1에서 예외 발생

<?php
    function inverse($x) {
        if (!$x) {
            throw new Exception(&#39;Division by zero.&#39;);
        }
        else return 1/$x;
    }
    try {
        echo inverse(5) . "\n";
        echo inverse(0) . "\n";
    } catch (Exception $e) {
        echo &#39;Caught exception: &#39;, $e->getMessage(), "\n";
    }
    // Continue execution
    echo &#39;Hello World&#39;;
?>
로그인 후 복사

위 루틴은 다음을 출력합니다.

0.2
발견된 예외: 0으로 나누기.
Hello World

예 #2 중첩된 예외

<?php
    class MyException extends Exception { }
    class Test {
        public function testing() {
            try {
                try {
                    throw new MyException(&#39;foo!&#39;);
                } catch (MyException $e) {
                    /* rethrow it */
                    throw $e;
                }
            } catch (Exception $e) {
                var_dump($e->getMessage());
            }
        }
    }
    $foo = new Test;
    $foo->testing();
?>
로그인 후 복사

위 루틴은 다음을 출력합니다:

string(4) "foo!"


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿