早期 PHP 僅有 Exception 可以被 try ... catch
,若遇到資料型態錯誤或是運算錯誤,則顯示 PHP Error
並且中斷程式執行;若是 Warning
或 Notice
,則程式會繼續執行。
在 PHP v7.x 後,除了原有的 Exception 以外,另外增加了 Error 型態。PHP 在遇到錯誤時,改拋 Error
而非中斷實行,程式設計師也可以透過 try ... catch
來決定 Error 要如何處理。
try { count(100); } catch (\Error $e) { // TypeError }
或是
try { 10 / 0; } catch (\Error $e) { // DivisionByZeroError }
這個 feature 讓 PHP 的 error handling 能力大幅增加,再加上防禦性程式設計,不太需要擔心沒留意 undefined behaviour 導致程式中斷、問題沒被記錄。
這和Python好相似啊
感覺程式語言未來會慢慢向可控制的方線看齊