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