早期 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好相似啊
感覺程式語言未來會慢慢向可控制的方線看齊