이 기사에서는 특정 참조 값이 있는 [php 매뉴얼] 예외 처리를 소개합니다. 이제 필요한 친구들이 참조할 수 있습니다.
예외 처리
PHP 5
Thrown in try code block (throw) 예외, catch 코드 블록에서 예외를 포착하세요
모든 시도에는 해당하는 catch 또는 finally 블록이 하나 이상 있어야 합니다.
던지는 개체는 Exception 클래스의 인스턴스이거나 Exception의 하위 클래스여야 합니다. 그렇지 않으면 PHP 치명적인 오류가 발생합니다.
try { throw new Exception('异常提示语'); //throw 123; //Fatal error: Uncaught Error: Can only throw objects //throw new stdClass(); //Fatal error: Uncaught Error: Cannot throw objects that do not implement Throwable } catch (Exception $e) { echo $e->getMessage(); }
catch
여러 catch 블록을 사용하여 다양한 범주의 예외를 잡을 수 있습니다.
정상 실행(try 블록 내에서 예외가 발생하지 않는 경우)은 순서대로 정의된 마지막 catch 블록 이후에 계속됩니다.
캐치 블록에서 예외가 발생(또는 다시 발생)될 수 있습니다.
예외가 발생하면 명령문 뒤의 코드는 실행되지 않고 PHP는 일치하는 첫 번째 catch 블록을 찾으려고 시도합니다.
예외가 발생하지 않으면 set_Exception_handler()를 사용하여 핸들러를 정의하지 않으면 "Uncaught Exception..." 메시지와 함께 PHP 치명적인 오류가 발생합니다.
finally
PHP 5.5 이상에서는 finally 블록을 catch 블록 뒤 또는 대신 지정할 수도 있습니다.
예외 발생 여부에 관계없이 finally 블록의 코드는 일반 실행이 다시 시작되기 전에 항상 try 및 catch 블록 이후에 실행됩니다.
Example #4 Exception handling with a finally block(用finally块处理异常)<?phpfunction inverse($x) { if (!$x) { throw new Exception('pision by zero.'); } return 1/$x; }try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "First finally.\n"; }try { echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "Second finally.\n"; }// Continue executionecho "Hello World\n";?>
Example #5 Nested Exception (嵌套异常)<?phpclass 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();?>
Note set_exception_handler()设置用户自定义的异常处理函数 Exception::getMessage 获取异常消息内容
관련 추천:
위 내용은 [php 매뉴얼] 예외 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!