1.try catch 捕捉不到fatal error致命錯誤
2.只有拋出異常才能被截獲,如果異常拋出了卻沒有被捕捉到,就會產生一個fatal error
3.父類可以捕獲子類拋出的異常
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";
}
上段代碼執行結果:
sun----ExceptionNew