从PHP7,错误处理和报告已经改变。PHP5中使用了传统的错误报告机制的错误,现在大多数的错误将通过抛出异常错误处理。类似于异常,这些错误异常会冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,那么会使用 set_exception_handler() 安装一个默认的异常处理并被调用,并在情况下,如果没有默认的异常处理程序,那么该异常将被转换为一个致命的错误,并会像传统错误那样处理。
由于 Error 层次结构不是从异常(Exception),代码扩展使用catch (Exception $e) { ... } 块来处理未捕获的异常,PHP5中将不会处理这样的错误。 catch (Error $e) { ... } 块或 set_exception_handler()处理程序需要处理的致命错误。
<?php |
class MathOperations |
{ |
protected $n = 10; |
// Try to get the Division by Zero error object and display as Exception |
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