php實現的PDO異常處理操作分析

這篇文章主要介紹了php實現的PDO異常處理操作,結合實例形式分析了pdo異常處理的相關原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了php實現的PDO異常處理操作。分享給大家供大家參考,具體如下:

異常處理:

PHP:默認爲直接報錯

MYSQL:默認爲靜默模式,錯就錯,不報錯

PDO:默認爲靜默模式,錯就錯,不報錯

以前,當PHP碰到錯誤的時候,會直接報錯,錯誤處理會變得相當麻煩。後來,當錯誤發生之後,會將錯誤信息不再直接輸出,放到一個類的對象裏(PDOException)

要使用PDO異常處理,必須滿足兩個條件

1、需要將錯誤處理模式變成異常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

2、所有可能出錯的語句都必須放到錯誤捕捉語句塊裏

try{
   //錯誤捕捉語句塊
   //凡是有可能出現錯誤的語句都放在這
   //一旦出錯會立即進入catch語句,把所有的錯誤信息放到PDOexception $e裏面
}catch(PDOExecption $e){
   //將錯誤信息進行處理
}

例如:

try{
  //連接認證
  $pdo = new PDO('mysql:host=localhost;dbname=project','root','root');
  //設置錯誤處理模式
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  //組織SQL
  $sql= "update pro_student set s_age = 123 where s_id = 20";
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  //var_dump($e);
  //告訴用戶在哪個文件的哪一行出現了什麼樣的錯誤
  echo '出現異常:<br/>';
  echo '錯誤出現的位置:' . $e->getFile() . $e->getLine() . '<br/>';
  echo '錯誤原因:' . $e->getMessage();
  var_dump($e->getTrace());//獲取完整的錯誤數據
  exit;
}

有的時候,如果數據執行沒有任何錯誤,但是就是不符合指定的業務邏輯。一旦出現業務邏輯錯誤,異常是沒有辦法捕捉(異常只捕捉語法錯誤),一般認爲的去通過判斷語句的執行(結果),主動拋出異常,從而結束錯誤程序的運行。

語法:throw new PDOException;

$sql = "select * from pro_student where s_id = 20";
$stmt = $pdo->query($sql);
if($stmt->fetchColumn(4) > 100) throw new PDOException; //拋出異常,立馬跳轉到catch語句塊
else{
  echo '沒有問題';
}

更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP基於pdo操作數據庫技巧總結》、《php+Oracle數據庫程序設計技巧總結》、《PHP+MongoDB數據庫操作技巧大全》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧彙總

希望本文所述對大家PHP程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章