PHP 7 錯誤處理
PHP 7 錯誤處理
PHP 7 改變了大多數(shù)錯誤的報告方式。不同於 PHP 5 的傳統(tǒng)錯誤回報機制,現(xiàn)在大多數(shù)錯誤都被當作 Error 異常拋出。
這種 Error 異??梢韵衿胀ó惓R粯颖?try / catch 區(qū)塊所捕捉。如果沒有符合的 try / catch 區(qū)塊, 則呼叫異常處理函數(shù)(由 set_exception_handler() 註冊)進行處理。 如果尚未註冊異常處理函數(shù),則按照傳統(tǒng)方式處理:被報告為一個致命錯誤(Fatal Error)。
Error 類別並不是從 Exception 類別 擴展出來的,所以用 catch (Exception $e) { ... } 這樣的程式碼是捕獲不 到 Error 的。你可以用 catch (Error $e) { ... } 這樣的程式碼,或是透過註冊異常處理函數(shù)( set_exception_handler())來捕捉 Error。
Error 異常層次結(jié)構(gòu)
- Error
- ArithmeticError
- AssertionError
- #DivisionByZeroError
- ParseError
- TypeError
- Exception
- #...
實例
<?php class MathOperations { protected $n = 10; // 求余數(shù)運算,除數(shù)為 0,拋出異常 public function doOperation(): string { try { $value = $this->n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); ?>
以上程式執(zhí)行輸出結(jié)果為:
Modulo?by?zero