1.try catch 捕捉不到fatal error致命錯誤
2.只有拋出異常才能被截獲,如果異常拋出了卻沒有被捕捉到,就會產生一個fatal error。
3.父類可以捕獲拋出的子類異常,Exception 可以捕獲繼承Exception 類型的異常
class ExceptionNew extends Exception{ } function try_throw($type) { if ($type == 1) { throw new ExceptionNew("sunyue"); } } try { try_throw(1); } catch (Exception $e) { echo $e->getMessage(); }
4.try中的代碼一旦拋出異常,代碼將停止運行,直接執行catch中的代碼
5.多個catch捕獲多個異常
PHP將查詢一個匹配的catch代碼塊。如果有多個catch代碼塊,傳遞給每一個catch代碼塊的對象必須具有不同類型(或者可以用同一父類去捕獲,這樣只要一個catch就可以了),這樣PHP可以找到需要進入哪一個catch代碼塊。當try代碼塊不再拋出異常或者找不到catch能匹配所拋出的異常時,PHP代碼就會在跳轉最后一個catch的后面繼續執行。因為原則4,所以每次其實這能拋出一個異常,一個異常被捕獲。
class ExceptionNew extends Exception{ } class MyException extends Exception{ } function try_throw($type) { if ($type == 1) { throw new ExceptionNew("sun"); } if($type > 0){ throw new MyException("yue"); } } try { try_throw(1); // try_throw(2); }catch (ExceptionNew $e) { echo $e->getMessage();echo "----ExceptionNew"; }catch (MyException $e) { echo $e->getMessage();echo "----MyException"; }