php 7 오류 처리 메커니즘 수정 실례 분석
하나,현재 두 가지 이상 클래스 가 있 습 니 다:Exception and Error.
PHP 7 에는 현재 두 개의 이상 클래스 가 있 습 니 다.Exception and Error.이 두 종 류 는 모두 새로운 인 터 페 이 스 를 실현 했다.Throwable.이상 처리 코드 에서 형식 암 시 는 조정 이 필요 할 수 있 습 니 다.
2.일부 치 명 적 인 오류 와 치 명 적 인 오 류 를 오류 대상 으로 바 꿉 니 다.
치 명 적 인 오류 와 치 명 적 인 오 류 를 복구 할 수 있 는 오류 가 있 습 니 다.Error 대상 은 Exception 과 독립 되 어 있 으 며,일반적인 try/catch 에 의 해 잡 힐 수 없습니다.편집자:오류 처리 함 수 를 등록 해 야 합 니 다.아래 RFC 를 참고 하 십시오.
이상 하 게 변 한 치 명 적 인 오류 에 대해 서 는 error handler 를 통 해 조용히 무시 할 수 없습니다.특히 유형 암시 오 류 를 무시 할 수 없다.
3.문법 오류 가 ParseError 대상 을 던 집 니 다.
문법 오 류 는 ParseError 대상 을 던 집 니 다.이 대상 은 Error 대상 을 계승 합 니 다.이전에 eval()을 처리 할 때,잠재 적 으로 오류 가 발생 할 수 있 는 코드 는 반환 값 이나 error 를 검사 하 는 것 을 제외 하고get_last()외 에 도 ParseError 대상 을 캡 처 해 야 합 니 다.
4.내부 대상 의 구조 방법 은 실패 할 때 이상 을 던 집 니 다.
내부 대상 의 구조 방법 은 실패 할 때 이상 을 보고 합 니 다.이전의 몇몇 구조 방법 은 NULL 이나 사용 할 수 없 는 대상 을 되 돌려 줍 니 다.
5.일부 ESTRCT 의 잘못된 등급 이 조정 되 었 습 니 다.
PHP 7 오류 처리
PHP 7 은 대부분의 잘못된 보고 방식 을 바 꾸 었 습 니 다.PHP 5 의 전통 적 인 오류 보고 체제 와 달리 현재 대부분의 오 류 는 Error 이상으로 던 져 집 니 다.
이 오류 이상 은 일반 이상 처럼 try/catch 블록 에 포 착 될 수 있 습 니 다.일치 하 는 try/catch 블록 이 없 으 면 이상 처리 함수(setexception_handler()등록 처리.이상 처리 함 수 를 등록 하지 않 으 면 전통 적 인 방식 으로 처리 합 니 다.치 명 적 인 오류(Fatal Error)로 보 고 됩 니 다.
Error 클래스 는 Exception 클래스 에서 확 장 된 것 이 아니 므 로 catch(Exception$e){...}같은 코드 로 Error 를 잡 을 수 없습니다.catch(Error$e){...}같은 코드 를 사용 하거나 이상 처리 함수(set)를 등록 할 수 있 습 니 다.exception_handler()에서 Error 를 캡 처 합 니 다.
오류 이상 계층 구조
1.Error
ArithmeticError
AssertionError
DivisionByZeroError
ParseError
TypeError
...
실례
<?php c
lass 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 이상 은 오래된 assert()함 수 를 아래로 호 환 하고 강화 하 는 데 사 용 됩 니 다.그것 은 생산 환경 에서 제로 비용 의 단언 을 실현 하고 사용자 정의 이상 과 오 류 를 던 지 는 능력 을 제공 할 수 있다.
이전 버 전의 API 는 호 환 목적 으로 계속 유 지 됩 니 다.assert()는 현재 언어 구조 입 니 다.첫 번 째 매개 변 수 는 계산 할 string 이나 테스트 할 boolean 뿐만 아니 라 표현 식 일 수 있 습 니 다.
assert()설정
설정 항목
기본 값
선택 값
zend.assertions
1
1-코드 생 성 및 실행(개발 모드)
0-코드 생 성,실행 중 건 너 뛰 기
-1-코드 생 성 안 함(생산 환경)
0
1-단언 실패 시 던 지고 이상 대상 을 던 질 수 있 으 며 이상 을 제공 하지 않 으 면 Assertion Error 대상 인 스 턴 스 를 던 집 니 다.
0-Throwable 을 사용 하거나 생 성 합 니 다.대상 을 던 지 는 것 이 아니 라 대상 을 기반 으로 하 는 경고 입 니 다(PHP 5 와 호 환)
assertion
단언PHP 5 에 서 는 실행 할 문자열 이나 테스트 에 사용 할 불 값 입 니 다.PHP 7 에 서 는 모든 값 을 되 돌려 주 는 표현 식 일 수 있 습 니 다.실행 결 과 는 성공 여 부 를 가리 키 는 데 사 용 됩 니 다.
description
assertion 이 실패 하면 옵션 description 은 실패 정보 에 포 함 됩 니 다.
exception
PHP 7 에서 두 번 째 인 자 는 하나 일 수 있 습 니 다. 문자열 이 아 닌 Throwable 대상 입 니 다.단언 이 실패 하고 assert.exception 을 사용 하면 대상 이 던 져 집 니 다.
실례
zend.assertions 를 0 으로 설정 합 니 다:
<?php
ini_set('zend.assertions', 0);
assert(true == false);
echo 'Hi!';
?>
이 프로그램의 출력 결 과 는 다음 과 같 습 니 다.
Hi!
zend.assertions 를 1 로 설정 하고 assert.exception 을 1 로 설정 합 니 다.실례
<?php
ini_set('zend.assertions', 1);
ini_set('assert.exception', 1);
assert(true == false); echo 'Hi!';
?>
이 프로그램의 출력 결 과 는 다음 과 같 습 니 다.
Fatal error: Uncaught AssertionError:
assert(true == false) in -:2Stack trace:#0 -(2):
assert(false, 'assert(true == ...')#1 {main}
thrown in - on line 2
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeigniter 4 Post 요청안녕하십니까, 안녕하십니까?,당신들에게 이것은 당신들이 코드igniter4의 작업 원리에 대해 기본적인 이해를 얻었거나 단지 시험해 보고 싶다는 것을 의미합니다. 따라서 이 예에서 POST 요청을 뷰에서 컨트롤러로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.