编写软件调试之后、交付之前,是不是应该到处加上onerror resume next?

unsv29mj 2009-10-30 09:19:48
因为我发现有时候软件里面的笔误有时会存在,但是测试的时候不一定能测试到。所以问下:

大家都是怎么弄的,是不是加上onresum next ?免得软件崩溃,在客户面前丢面子!

大家都是怎么弄的?

多谢!!!
...全文
274 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-11-05
  • 打赏
  • 举报
回复
可以设置On Error GoTo 语句,捕获错误。而且最好有,这样代码严谨
chenhui530 2009-11-05
  • 打赏
  • 举报
回复
掩耳盗铃
Tiger_Zhao 2009-11-05
  • 打赏
  • 举报
回复
编程:
正常操作必定/可能发生的错误必须对应。
所有不可预期的错误都必须捕获并提示,提示信息必须能够直接定位发生错误的代码行,最好还要有出错时的各种状态信息。

测试:
编程只占软件开发总工作量的 1/3~1/4,合格的软件至少要用 1/3 以上的工作量进行各个阶段的测试。
自己进行集成测试时至少保证代码覆盖率(除不可预期的错误处理以外 100%)。
fzx4936 2009-11-05
  • 打赏
  • 举报
回复
程序开发完之后 详细的测试是必不可少的,绝对不是一句"测试的时候不一定能测试到"就能说得过去的
必须有详尽的测试方案
不然IT界里就不会有测试工程师这个职业了
Siramizu 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 getemail 的回复:]
可以用
on error goto aaa
'这里写代码


aaa:
msgbox "出现编号为 & "Err.Number & "的错误,请联系..."
[/Quote]我们就是用这样的
舉杯邀明月 2009-11-05
  • 打赏
  • 举报
回复
我觉得这样做比较好:
  用 On Error GoTo 捕获异常,并根据对异常的判断,按不同的情况分别进行容错处理,再让程序继续运行或终止当前操作(终止操作时要提示用户一些必要的信息);对严重的未预料异常则提示用户“在进行XXX操作时出现XX错误,请联系XXXXXX进行咨询(或:请将XXXXX(信息)反馈到XXXX,............)”,商业软件应该带上一些致歉的话语。
unsv29mj 2009-11-04
  • 打赏
  • 举报
回复
没人say了?
linc_M 2009-11-04
  • 打赏
  • 举报
回复
养成好习惯。多写注释。
threenewbee 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 a373903757 的回复:]
每一个程序都有一定的错误,没有完美的程序,如果有,为什么游戏要更新后又更新呢,就是为修复BUG而来的!
所以我们也不可能说避免错误,只可以说的是尽量吧!在打下每一句代码时!!想一想会不会影响到其他方面的功能!!
所以说,编程序花最长时间就是维护!!
慢慢来吧!!有错误不要紧!!只要自己肯去修改!!不会说什么有面子没面子的!!
[/Quote]
错误、BUG和异常是不同的,VB用Error而不是Exception误导了很多人。
难道说"为什么游戏要更新后又更新"就是不断加入On Error Resume Next?
a373903757 2009-11-04
  • 打赏
  • 举报
回复
每一个程序都有一定的错误,没有完美的程序,如果有,为什么游戏要更新后又更新呢,就是为修复BUG而来的!
所以我们也不可能说避免错误,只可以说的是尽量吧!在打下每一句代码时!!想一想会不会影响到其他方面的功能!!
所以说,编程序花最长时间就是维护!!
慢慢来吧!!有错误不要紧!!只要自己肯去修改!!不会说什么有面子没面子的!!
波导终结者 2009-11-04
  • 打赏
  • 举报
回复
笔误有时会存在?
LZ没有强制声明变量吧,然后随手抓起一个没声明的变量就开始用,我就奇怪了,到时候你怎么查
threenewbee 2009-11-04
  • 打赏
  • 举报
回复
有时候软件里面的笔误有时会存在,但是测试的时候不一定能测试到

lz完全理解错误On Error Resume Next的用意了。

这里的Error不是软件编写的错误,而是运行时遇到的异常。
使用On Error不能减少软件的BUG,滥用只会引入新的BUG。。。

举几个例子:
(1)假设有如下的伪代码:
while getDatabaseConnect() = true
LoadData()
wend
如果数据库不可用,会丢出异常,那么使用On Error Resume Next会使得代码陷入死循环,程序瘫痪。
(2)有时候出现异常并非出错,而是正常情况,比如当comdialog设置cancelerr = true的时候,用户点击cancel,会产生一个错误,如果忽略掉,那么造成BUG——明明用户取消了,可是还在按照确定以后的代码走。
(3)有些异常难以避免,但是根本无须提示用户。给出警告会让用户觉得烦恼、或者觉得软件不可靠、或者浪费客服资源。
(4)对于编写系统函数库的开发者,对于并非本函数能够处理的异常,抛出去而不是吃掉才是正确的做法——不然调用者不知道函数返回的是否正确,如果没有机制去证实函数是否运行完成,只能使得程序变得不可靠,举例:
一个系统函数从串口读取设备温度,假设温度在-10~60为正常,否则要报警,代码如下:
Function GetTemp() As Long
On Error Resume Next
GetTemp = ReadComPortData()
end function
假设ReadComPortData()出现异常,那么这个代码返回0,但是这个0不同于代码正常的时候返回的0所表示的0摄氏度,而是一个无意义的初始值。我们的主程序如果不知道这个情况,可能程序是不会打断了,但是一场事故就要酿成了!!!
(5)异常本身也是调试程序、简化程序代码有时候利用的技巧,这个比较复杂,就不想细说了。

所以,lz千万要改变认识,增加On Error Resume Next根本不能减少程序的问题,只会引入新的BUG。
神马都能聊 2009-11-04
  • 打赏
  • 举报
回复
把错误从根源掐死……,不然你以后就要不停的放过错误。
getemail 2009-11-04
  • 打赏
  • 举报
回复
帮顶一下
dingyanwei 2009-10-30
  • 打赏
  • 举报
回复
我知道加入 on error resume next不是最好的方法,但我的确会加上,如果客户那边出了问题反馈时我会取消这个错误处理然后再模拟出错的操作过程,基本上都能找到。

崩溃确实不是一个好的现象,而完全避免错误也不太可能,所以,尽量保证客户在按照手册操作流程走是不会出错的就行了。
booksoon 2009-10-30
  • 打赏
  • 举报
回复
你要知道一点,没有不出错的程序~~~
getemail 2009-10-30
  • 打赏
  • 举报
回复
我也想知道别人都是怎么做
别急着结帖子,大家交流交流

[Quote=引用 6 楼 unsv29mj 的回复:]
多谢 楼上 期待更多的建议.......
[/Quote]
unsv29mj 2009-10-30
  • 打赏
  • 举报
回复
多谢 楼上 期待更多的建议.......
getemail 2009-10-30
  • 打赏
  • 举报
回复
做一个漂亮的帮助会使你很有面子
getemail 2009-10-30
  • 打赏
  • 举报
回复
是的是的

[Quote=引用 3 楼 leftie 的回复:]
VB codeonerrorgoto aaa'这里写代码exitsub'这句要加上,不然都会执行aaa这段aaa:
msgbox"出现编号为 &"Err.Number&"的错误,请联系..."
[/Quote]
加载更多回复(3)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧