PHP 7 예외

PHP 7 예외는 이전 버전과의 호환성과 이전 Assert() 기능의 향상을 위해 사용됩니다. 프로덕션 환경에서 비용이 전혀 들지 않는 어설션을 활성화하고 사용자 지정 예외 및 오류를 발생시키는 기능을 제공합니다.

이전 버전의 API는 호환성 목적을 위해 계속 유지 관리됩니다. 이제 Assert()는 언어 구문으로, 첫 번째 매개 변수가 계산할 문자열이나 테스트할 부울이 아닌 표현식이 될 수 있습니다.


assert() 구성

구성 항목기본값선택값
zend.assertions1
  • 1 - 코드 생성 및 실행(개발 모드)

  • 0 - 코드를 생성하지만 실행 시 건너뛰기

  • -1 - 코드를 생성하지 않음(프로덕션 환경)

assert.Exception0
  • 1 - 어설션이 실패할 때 발생하며, 예외 개체가 발생하거나, 예외가 제공되지 않으면 AssertionError 개체 인스턴스가 발생합니다.成0

  • -Throwable을 사용하거나 생성합니다. 객체를 던지는 대신 객체에 의해 생성된 경고입니다(PHP 5와 호환 가능). PHP 5에서는 실행을 위한 문자열 또는 테스트를 위한 부울입니다. PHP 7에서는 임의의 값을 반환하는 표현식이 될 수 있으며 결과는 어설션이 성공했는지 여부를 나타내는 데 사용됩니다.

description

이 실패할 경우 옵션 설명이 실패 메시지에 포함됩니다.

  • Exception
  • PHP 7에서 두 번째 매개변수는 문자열 대신

    Throwable
  • 객체일 수 있습니다. 이 객체는 어설션이 실패하고 Assert.Exception이 활성화된 경우 발생합니다.
  • Instance
  • zend.assertions를 0으로 설정: assertion

  • Instance
  • <?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!';
?>

위 프로그램 실행 출력 결과는 다음과 같습니다.

치명적인 오류: Uncaught AssertionError: 주장(true == false) in -:2
스택 추적:

#0 -(2): 주장(false, 'assert(true == ...')

#1 {main}
던져진 - 라인 2

지속적인 학습