php 7 오류 처리 메커니즘 수정 실례 분석

4442 단어 php7오류 처리
본 고의 실례 는 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     
  • 2.Exception
    ...
    1458887252-2773-exception-hiearchy.jpg
    실례
    
    <?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-코드 생 성 안 함(생산 환경)
  • assert.exception
    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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기