作者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)
1F:推 jaker:问题是我自己跑都正常,我看不出问题 219.85.220.35 03/18 00:04
2F:→ jaker:很伤脑筋那些人真有才能,怎麽才能搞出问题 219.85.220.35 03/18 00:04
3F:→ jaker:您说的没错,问题是发生错误都是在user端, 219.85.220.35 03/18 00:05
4F:→ jaker:错误在他们电脑上印变数给他们看根本没有用 219.85.220.35 03/18 00:05
5F:→ jaker:有 我都叫他们讲清楚 可是没一个能讲清楚唉 219.85.220.35 03/18 00:06
6F:→ jaker:如果状况跑给我自己看哪还有这麽伤脑筋呢 219.85.220.35 03/18 00:07
7F:→ yauhh:"跑正常所以看不出问题",这样并不是在除错218.160.209.190 03/18 08:43
8F:→ yauhh:电脑跑过并不代你思考了程式哪里有错,你还是218.160.209.190 03/18 08:44
9F:→ yauhh:多想一下怎麽造成某物件关闭.事出必有因.218.160.209.190 03/18 08:44
10F:→ Semisphere:你是程式开发人员,你用正确的方法操纵118.166.210.107 03/18 13:41
11F:→ Semisphere:当然不会有问题,使用者的想法你得要多118.166.210.107 03/18 13:42
12F:→ Semisphere:了解,这只能多加训练来克服118.166.210.107 03/18 13:43
13F:推 horngsh:程式补捉到错误时,写资讯到LOG,请USER给 112.105.225.92 03/20 11:49
14F:→ horngsh:Log 112.105.225.92 03/20 11:50