PHP 7 錯誤處理
PHP 7 改變了大多數錯誤的報告方式。 不同於PHP 5的傳統錯誤報告機制,現在大多數錯誤被作為Error異常拋出。
這種Error 異常可以像普通異常一樣被try / catch 塊所捕獲。 如果沒有匹配的try / catch 塊, 則調用異常處理函數(由set_exception_handler() 註冊)進行處理。 如果尚未註冊異常處理函數,則按照傳統方式處理:被報告為一個致命錯誤(Fatal Error)。
Error 類並不是從Exception 類擴展出來的,所以用catch (Exception $e) { ... } 這樣的代碼是捕獲不到Error 的。 你可以用catch (Error $e) { ... } 這樣的代碼,或者通過註冊異常處理函數( set_exception_handler())來捕獲Error。
Error 異常層次結構
- Error
- ArithmeticError
- AssertionError
- DivisionByZeroError
- ParseError
- TypeError
- Exception
- ...
實例
實例
<?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 ());
?>
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