幾種捕獲ClientDataSet.ApplyUpdates和SocketConnection異常的方法比較

小宇飛刀發表於2009-04-25

 問題:如何捕獲ClientDataSet.ApplyUpdates的錯誤,不用ReconcileError呢?

//如果用這個錯誤處理,我的事務回滾卻不知放在何處才妙,並且我不是想用這個錯誤處理
解答一:
//---------------------------------------------------------------
//據我所知,只能用ReconcileError 可以用下面的方法判斷是否錯誤
//---------------------------------------------------------------
解答二:
//---------------------------------------------------------------
在DataSetProvider的onUpdateError


然後就可以在客戶端做如下處理:


//----------------------------------------------------------------
解答三:
   其實真正的捕獲ClientDataSet.ApplyUpdate異常的方法應該是在Apllication的異常中捕獲並處理它。因為 ClientDataSet丟擲的異常為執行緒(程式?)異常,在ClientDataSet的ApplyUpdate中用 try...except...end;是無法捕獲的。

   具體方法為:在公共單元如DataModule中放置一個ApplicationEvent件,在該控制元件的OnException事件中捕獲異常,該窗體應在所有有可能產生ApplyUpdate或Connection異常的窗體之前建立。


更深入更詳細的分析可參考: http://blog.csdn.net/xieyunc/archive/2009/04/28/4131958.aspx

相關文章