2011-11-21 61 views
1

我應該在下面的代碼片段中使用try catch。我想如果zend不能刪除一行或異常,它會返回整數(0)。那麼有什麼更好,爲什麼?如何使用try catch for zend dbtable delete

$statusDbObj = new Tracker_Model_DbTable_Status(); 
$where = $statusDbObj->getAdapter()->quoteInto('tracking_number = ?', $airwaybill_number); 
$delete = $statusDbObj->delete($where); 
if($delete > 0) 
{ 
    // do something 
} 
else 
{ 
    // not deleted 
} 

這裏是嘗試捕捉:

try 
    { 
    $statusDbObj = new Tracker_Model_DbTable_Status(); 
    $where = $statusDbObj->getAdapter()->quoteInto('tracking_number = ?', $airwaybill_number); 
    $delete = $statusDbObj->delete($where); 

    if($delete > 0) 
    { 
     // do something 
    } 
    } 
    catch (Exception $e) 
    { 
    // not deleted and print error 
    } 

我在使用嘗試捕捉是新

回答

1

這取決於你想解決什麼樣的問題:

  • 剛使用delete結果將幫助您檢測「預期問題」(例如,當您無法刪除條目,因爲它們與where表達)。
  • 如果還使用try - catch結構(例如,受涼Zend_Db_Exception,這很可能是由delete方法拋出),你將還能夠檢測「意外問題」(例如,如果數據庫連接失敗)。如果你省略這個結構,最終的異常將會彈出給你的代碼的調用者,並且你還需要在某個地方解決它們。

希望幫助,

+0

對於第二個問題,您的意思是否使用try-catch塊? –

+0

是的,我指出你需要同時使用兩者,以確保你能夠考慮所有可能的錯誤。只是你可以得到不同的錯誤,你需要以不同的方式解決它們。一個異常通常是一個運行時錯誤,而一個返回值可能是或者不是一個錯誤,它取決於你的應用程序。 – dinopmi

+0

感謝您的建議。我將在這裏使用try-catch來捕獲數據庫連接失敗或其他最終的異常。 –