作者yauhh (喲)
看板Programming
標題Re: [問題] ASP的錯誤陷阱 無助於除錯怎辦
時間Thu Mar 17 23:20:53 2011
※ 引述《jaker (Jaker)》之銘言:
: 說出現錯誤,可是畫面上回報的錯誤訊息根本沒有幫助,
: 發生的訊息如下:
: ==============
: 錯誤 Number: 3704
: 錯誤資訊: 當物件關閉時,不允許操作。
: 出錯文件: ADODB.Recordset
: 出錯行:
: ==============
: 出錯行是空白,這樣我根本看不出是哪一行出了錯誤啊。
: 如果取消on error,確實是會顯示完整的錯誤和行數,
: 可是遇到問題的都是不懂電腦更不懂程式的買家,
: 就算他們看到這些訊息也不會知道要告訴我。
: (因為取消了on error也失去了將處理方式告知買家的機會)
: 最近訂單大降,可能跟這個有很重要的關係,
: 到底要怎麼辦才好呢?
雖然很無奈,但是 #3704 查得到 error 類型是 object is closed.
而物件跟 recordset 有關.
一頁中會用到 recordset 的數目應該不多,可以從頭到尾看程式
哪裡程式製造出一種狀態讓 recordset 這個物件不見了.
除錯是要針對問題解決,而不是針對程式行數解決.
具體來說要從頭到尾把程式過程看清楚,思考在中間有沒有製造一些意外效果的 bug,
而這種毛病是比較難抓. 可以用特定位置列印變數的方式,定位出錯的位置,
相對是比較好抓到問題.
另外因為出錯都會默默通過,所以要在程式的任何可能會出錯的位置之後
自己做 if err.number <> 0 判斷,加上補救程序,當作是一種土法的 try-catch 來用.
然後,對買家來說,要盡可能拋出可以理解的錯誤訊息,例如:
"程式出問題,請洽工程人員". 至於程式詳細訊息就留在 dev 版本給程式人員吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.209.190
※ 編輯: yauhh 來自: 218.160.209.190 (03/17 23:24)
推 jaker:問題是我自己跑都正常,我看不出問題 219.85.220.35 03/18 00:04
→ jaker:很傷腦筋那些人真有才能,怎麼才能搞出問題 219.85.220.35 03/18 00:04
→ jaker:您說的沒錯,問題是發生錯誤都是在user端, 219.85.220.35 03/18 00:05
→ jaker:錯誤在他們電腦上印變數給他們看根本沒有用 219.85.220.35 03/18 00:05
→ jaker:有 我都叫他們講清楚 可是沒一個能講清楚唉 219.85.220.35 03/18 00:06
→ jaker:如果狀況跑給我自己看哪還有這麼傷腦筋呢 219.85.220.35 03/18 00:07
→ yauhh:"跑正常所以看不出問題",這樣並不是在除錯218.160.209.190 03/18 08:43
→ yauhh:電腦跑過並不代你思考了程式哪裡有錯,你還是218.160.209.190 03/18 08:44
→ yauhh:多想一下怎麼造成某物件關閉.事出必有因.218.160.209.190 03/18 08:44
→ Semisphere:你是程式開發人員,你用正確的方法操縱118.166.210.107 03/18 13:41
→ Semisphere:當然不會有問題,使用者的想法你得要多118.166.210.107 03/18 13:42
→ Semisphere:瞭解,這只能多加訓練來克服118.166.210.107 03/18 13:43
推 horngsh:程式補捉到錯誤時,寫資訊到LOG,請USER給 112.105.225.92 03/20 11:49
→ horngsh:Log 112.105.225.92 03/20 11:50