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('Division by zero.'); } else return 1/$x; } try { echo inverse(5) . "\n"; echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } // Continue execution echo 'Hello World'; ?>
위 루틴은 다음을 출력합니다.
0.2
발견된 예외: 0으로 나누기.
Hello World
예 #2 중첩된 예외
<?php class MyException extends Exception { } class Test { public function testing() { try { try { throw new MyException('foo!'); } catch (MyException $e) { /* rethrow it */ throw $e; } } catch (Exception $e) { var_dump($e->getMessage()); } } } $foo = new Test; $foo->testing(); ?>
위 루틴은 다음을 출력합니다:
string(4) "foo!"