這是一個園長學習VFP(Visual Foxpro)的Blog歡迎同好一起來參與

星期二, 3月 16, 2010

VFP 之錯誤處理

在 VFP 中,錯誤處理查Help 可得知
ON ERROR [Command]
一般這個 [command] 我們會執行一個程序來顯示錯誤訊息

一般通用的寫法是:
On Error Do errhand With Error( ), Message( ), Message(1), Program( ), Lineno( ),.T.
這裏的 errorhand 就是要顯示錯誤的程序
如下:
*錯誤函式處理,使用時必須先於之前宣告errcode,errmess變數
Procedure errhand
Parameter merror, Mess, mess1, mprog, mlineno
ErrCode=merror
ErrMess=Mess
errmsg=;
'錯誤編號:' + Ltrim(Str(merror))+Chr(13)+;
'錯誤訊息: ' + Mess +Chr(13)+;
'程 式 碼: ' + mess1+Chr(13)+;
'程式行號: ' + Ltrim(Str(mlineno))+Chr(13)+;
'程式名稱: ' + mprog
Messagebox(errmsg,"錯誤!!請回報程式設計人員!!")
Quit
Endproc
如此即可顯示錯誤的訊息給使用者回報
但有一個問題:
若您在程式中使用
Try
......
Catch to oErr
......
Finally
......
ENDTRY
此時並不會觸發 On Error 之處理程序,而是產生一個oErr的物件
為求統一,因此我們可以這樣處理
建立一個TryCmd的函式
程式碼如下:
FUNCTION TryCmd
LPARAMETERS pstr_cmd
If !Empty(pstr_cmd)
   Try
       &pstr_cmd
   Catch To oErr
       Do errhand With oErr.errorno,oErr.Message,oErr.linecontents,oErr.Procedure,oErr.Lineno
   Finally
   ENDTRY
endif
ENDFUNC
使用方式:
例如:要開啟一個table 叫作 testdbf
那麼這樣使用
strcmd="use testdbf"
TryCmd(strcmd)
如此一來,我們的錯誤處理就有一致性

發表於 2007/04/13 03:20 PM

沒有留言: