1. 程式人生 > >PDO 中支持三種錯誤處理模式:

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

測試 語法 nbsp span cat 參數 不執行 處理異常 new

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();

}

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