오류 처리 메커니즘 수정
1. 이제 Exception과 Error라는 두 가지 예외 클래스가 있습니다.
PHP7에는 이제 Exception과 Error라는 두 가지 예외 클래스가 있습니다. 두 클래스 모두 새로운 인터페이스인 Throwable을 구현합니다. 예외 처리 코드에서 유형 힌트를 조정해야 할 수도 있습니다.
2. 일부 치명적인 오류와 복구 가능한 치명적인 오류는 대신 Error 개체를 발생시킵니다.
일부 치명적인 오류 및 복구 가능한 치명적인 오류는 이제 대신 오류 개체를 보고합니다. Error 객체는 Exception과 독립적이며 일반적인 try/catch로 포착할 수 없습니다. 편집자 주: 오류 처리 기능을 등록해야 합니다. 아래 RFC를 참조하세요.
예외로 전환된 이러한 복구 가능한 치명적인 오류는 오류 처리기를 통해 자동으로 무시될 수 없습니다. 특히 유형 힌트 오류는 무시할 수 없습니다.
3. 구문 오류는 ParseError 개체를 발생시킵니다.
구문 오류는 Error 개체에서 상속되는 ParseError 개체를 발생시킵니다. 이전에 eval()을 처리할 때 잠재적으로 오류가 발생하기 쉬운 코드에 대한 반환 값 또는 error_get_last()를 확인하는 것 외에도 ParseError 객체도 캡처해야 합니다.
4. 내부 객체의 생성 방법은 실패할 경우 항상 예외를 발생시킵니다.
내부 객체의 생성 방법은 실패할 경우 항상 예외를 발생시킵니다. 일부 이전 생성자는 NULL 또는 사용할 수 없는 개체를 반환했습니다.
5. 일부 E_STRICT 오류 수준이 조정되었습니다.
PHP 7 오류 처리
#🎜 🎜#PHP 7에서는 대부분의 오류가 보고되는 방식이 변경되었습니다. PHP 5의 기존 오류 보고 메커니즘과 달리 이제 대부분의 오류는 오류 예외로 발생합니다. 이 오류 예외는 일반 예외처럼 try/catch 블록으로 포착될 수 있습니다. 일치하는 try/catch 블록이 없는 경우, 처리를 위해 예외 처리 함수(set_Exception_handler()에 의해 등록됨)가 호출됩니다. 예외 처리기가 등록되지 않은 경우 기존 방식으로 처리됩니다. 즉, 치명적인 오류로 보고됩니다. Error 클래스는 Exception 클래스에서 확장되지 않으므로 catch (Exception $e) { ... }와 같은 코드는 catch할 수 없습니다. 오류에. catch (Error $e) { ... }와 같은 코드를 사용하거나 예외 처리기( set_Exception_handler())를 사용하여 오류를 포착합니다.
오류 예외 계층 구조
#🎜 🎜 #1.오류
- 산술 오류
Example
<?php class MathOperations { protected $n = 10; // 求余数运算,除数为 0,抛出异常 public function doOperation(): string { try { $value = $this->n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); ?>위 프로그램 실행의 출력 결과는 다음과 같습니다.
Modulo by zero# 🎜🎜##🎜 🎜#
PHP 7 예외PHP 7 예외는 이전 버전과의 호환성을 위해 사용됩니다. 그리고 기존 Asserts () 기능을 강화했습니다. 프로덕션 환경에서 비용이 전혀 들지 않는 어설션을 활성화하고 사용자 지정 예외 및 오류를 발생시키는 기능을 제공합니다.
호환성을 위해 이전 버전의 API는 계속 유지됩니다. 이제 Assert()는 평가할 문자열이 아닌 첫 번째 인수가 표현식이 되도록 허용하는 언어 구성입니다. 테스트할 부울입니다. assert() 구성기본값#🎜 🎜 ## ####옵션 값#### ## ## ## ## ###Zend.Assertions#🎜🎜 #####1#### 🎜 🎜# | 1 - 코드 생성 및 실행(개발 모드) | |
-1 - 코드 생성 없음(프로덕션 환경) | # Assert.Exceptionion 실패 시 발생하며, 예외 객체가 발생하거나, 예외가 제공되지 않으면 AssertionError 객체 인스턴스가 발생합니다.
|