PDO 的錯誤處理


PDO 全稱 PHP Data Object

​------------------    錯誤處理  -------------------------

​​php 的 mysql 擴展對於 mysql 執行中的錯誤,並不報錯顯示在頁面上。默認是“靜默模式”。如果要顯示錯誤到頁面上,需要使用函數 mysql_error()

if( !mysql_query("select * from ") ){

    echo mysql_error();

}

PDO 類對錯誤的處理默認也是“靜默模式”。​要輸出錯誤信息,也需要手動輸出。

$pdo->errorCode() //獲得錯誤的編碼

$pdo->errorInfo() //錯誤信息集合​,包含三個元素的索引數組

 

PDO 支持三種錯誤處理模式:

靜默模式,警告模式,異常模式

靜默模式是默認的,需要修改的話,通過設置 PDO 對象的屬性完成。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)​

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)​​

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)​​

警告模式:

警告模式也不是什么特別的東西哦,錯誤發生時會報一個警告,就只是一個警告,默認情況下,php對警告的處理是輸出頁面,可以自己定義處理函數。

異常模式:

​異常處理分成三步:拋出異常,監聽異常,捕獲異常。

​​其實異常就是錯誤。拋出的錯誤就是異常。錯誤處理是:觸發,處理。這里的的觸發就是異常處理的“拋出”。

拋出:throw

監聽:try

捕獲:catch​

​異常的工作原理是這樣的,把一些信息放到一個類的對象里面,這就是異常處理的原理。這個類叫異常類。這些信息叫異常信息。這沒有什么特別的。這個異常類是 Exception .

 

一般的異常處理:

​try{

  $age = 28;​

  if( $age > 26 ){

    throw new Exception("年齡過大");

  } 

}catch( Exception $e ){

  echo $e->getMessage();

}

throw 會拋出一個異常對象,這個對象是異常類的對象,所以寫為 new Exception 。​

try 會監聽寫在它里面的異常。​catch 會捕獲它的參數對應的異常。這里 catch 的參數是 Exception $e ,這種寫法表示這個參數是一個對象,而且只能是 Exception 類的對象。這是 php 語法里面對參數的限制。這個異常類可以是 Exception 或者 它的子類。如果是它的子類,那么 throw new 的類也應該是 ​Exception 類的子類(我是這么想的,未測試)。

 

PDO 的異常處理:​​

​​try{

  $pdo->query("set names "); //不需要拋出異常,可能是在query函數中拋出的

  echo '錯誤了'; //這句不會輸出​,拋出異常后程序掛起,必須處理異常,處理異常后這句也不執行。

}catch( PDOException $e ){  //PDOException類是 Exception類的子類的子類

  echo $e->getMessage();

}

其實,異常處理就是用面向對象的語法來處理錯誤。用一般的面向過程的方法也是可以,只是面向對象的語法比較高級。所以,錯誤處理方式分成兩種:標准錯誤處理,異常錯誤處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM