Foxtable(狐表)用户栏目专家坐堂 → 请问foxtable有没有容错语句


  共有8363人关注过本帖树形打印复制链接

主题:请问foxtable有没有容错语句

帅哥哟,离线,有人找我吗?
ybil
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2012/4/22 14:03:00 [显示全部帖子]

捕获异常错误

有些错误很难事先判断,例如对于下面的代码:

Ports.Add("COM20")
Ports(
"COM20"
).Open()

如果COM20已经被其他程序所使用,那么上面的代码会出现错误提示:

图片点击可在新窗口打开查看

显然这样的提示对于最终用户来说,是不太友好的,但是Foxtable并没有办法事先判断串口是否被其他程序占用,所以我们也无法给用户提供更友好的提示。

不过我们可以采用下面的语句捕获无法预判的错误:

Try
   代码一
Catch ex As Exception
   代码二
End Try
代码三

代码一为正常的代码,如果执行过程中没有发现错误,则跳过代码二,执行代码三,如果在执行代码一的过程中发现错误,则不提示错误信息,立即执行代码二,之后再执行代码三,这样我们就可以捕获代码一运行过程中的错误,在代码二中给用户提供更友好的提示。

例如:

Try
    Ports.Add("COM20"
)
    Ports("COM20").Open
()
Catch ex As Exception
    MessageBox.Show("COM20已经被其它程序占用,无法打开!","提示",MessageBoxButtons.OK
)
End
Try

不要轻易使用Try语句

不要轻易使用Try语句来捕获错误,除非遇到事先不能预判的错误,随便使用Try语句会降低代码质量和运行效率。

例如下面两段代码:

Dim dr As DataRow
dr
= DataTables("订单").Find("[产品] = '酱油'")
If
dr IsNot Nothing
   
dr("折扣") = 0.05
Else

    MessageBox.Show(
"没有找到符合条件的行!")
End
If

和:

Try
   Dim
dr As DataRow
   dr =
DataTables("订单").Find("[产品] = '酱油'")
   dr(
"折扣") = 0.05
Catch ex
As Exception
   MessageBox.Show(
"没有找到符合条件的行!")
End
Try

无论从哪个方面来说,第一段的质量和效率都好过第二段。


 回到顶部