從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