PHP 7 오류 처리

PHP 7은 대부분의 오류가 보고되는 방식을 변경합니다. PHP 5의 기존 오류 보고 메커니즘과 달리 대부분의 오류는 이제 Error 예외로 발생합니다.

이런 종류의 오류 예외는 일반 예외처럼 try/catch 블록으로 catch할 수 있습니다. 일치하는 try / catch 블록이 없으면 처리를 위해 예외 처리 함수(set_Exception_handler()에 의해 등록됨)가 호출됩니다. 예외 처리기가 등록되지 않은 경우 기존 방식으로 처리됩니다. 즉, 치명적인 오류로 보고됩니다.

Error 클래스는 Exception 클래스에서 확장되지 않으므로 catch (Exception $e) { ... }와 같은 코드는 Error를 잡을 수 없습니다. catch (Error $e) { ... }와 같은 코드를 사용하거나 예외 처리기(set_Exception_handler())를 등록하여 오류를 잡을 수 있습니다.

오류 예외 계층 구조

  • Error
    • ArithmeticError
    • AssertionError
    • DivisionByZero 오류
    • ParseError
    • TypeError
  • Exception
    • ...

Instance

<?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