下面來介紹一下關於php中異常處理的方法介紹,有需要學習的異常處理的朋友可參考本教程。
以下是引用片段:
1.允許一個方法給出一個出錯標記給客戶代碼
2.提供者錯誤的詳細資料
3.讓你同時判斷多個出錯條件,將你的錯誤報表和程式處理流程分開。
4.傳回值必須是獨立的類型,不會與正常返回的類型相混淆
兩個執行個體掌握PHP異常處理
//例【1】用 try...catch
| 代碼如下 |
複製代碼 |
/* PDO串連mysql資料庫,如果沒看過PDO,先看下PDO的建構函式,要不跳過例1看例2 */ $dsn = 'mysql:host=localhost;dbname=testdb'; $user = 'dbuser'; $password = 'dbpass'; try { $dbh = new PDO($dsn, $user, $password); //建立資料庫連接對象容易出現異常 echo '如果上面出現異常就不能顯示我了'; } catch (PDOException $e) { echo 'Connection failed: ' . $e->__toString(); } ?> |
例
| 代碼如下 |
複製代碼 |
//例[2] try..cathc 和 throw一起用 try { $error = '我拋出異常資訊,並且跳出try塊'; if(is_dir('./tests')){ echo 'do sth.'; }else{ throw new Exception($error,12345); } echo '上面有異常的話就輪不到我了!~ ',"n"; } catch (Exception $e) { echo '捕獲異常: ', $e->getMessage(),$e->getCode(), "n "; //顯示$error和123456 } echo '繼續執行'; ?> |
上面一個朋友說的,下面我自己來寫了點程式練習一下:
以下是程式碼片段:
| 代碼如下 |
複製代碼 |
$a = 20;
// 使用常規catch的例子 try { if($a == 1) { throw new Exception("I am 1", 1); } elseif ($a == 2) { throw new Exception("I am 2", 3); } elseif ($a == 3) { throw new Exception("I am 3", 3); } elseif ($a == 4) { throw new Exception("I am 4", 4); } else { throw new Exception("Who am I ?", 0); } } catch (Exception $e) { if($e->getCode() == 1) { echo "1 : ".$e; } elseif ($e->getCode() == 2) { echo "2 : ".$e; } elseif ($e->getCode() == 3) { echo "3 : ".$e; } elseif ($e->getCode() == 4) { echo "4 : ".$e; } else { echo "0 : ".$e; } } echo " -------------------------------------------------------------------------------- ";
// 使用不同的擴充異常類的例子 class A extends Exception{}; class B extends Exception{}; try { if($a == 1) { throw new A("I am A", 1); } elseif ($a == 2) { throw new B("I am B", 2); } else { throw new Exception("Who am I ?", 0); } } catch (A $e) { echo "1 : ".$e; } catch (B $e) { echo "2 : ".$e; } catch (Exception $e) { echo "0 : ".$e; } ?> |
輸出如下:
以下是引用片段:
0 : exception 'Exception' with message 'Who am I ?' in D:WebPHPWWWnewtest.php:24 Stack trace: #0 {main}
--------------------------------------------------------------------------------
0 : exception 'Exception' with message 'Who am I ?' in D:WebPHPWWWnewtest.php:69 Stack trace: #0 {main}
http://www.bkjia.com/PHPjc/629027.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629027.htmlTechArticle下面來介紹一下關於php中異常處理的方法介紹,有需要學習的異常處理的朋友可參考本教程。 以下是引用片段: 1.允許一個方法給出一個出...