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


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

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

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


加好友 发短信
等级:童狐 帖子:200 积分:1881 威望:0 精华:0 注册:2011/11/24 15:19:00
请问foxtable有没有容错语句  发帖心情 Post By:2012/4/22 13:25:00 [只看该作者]

比如一旦遇到文件不存在就停止执行了 有没有让他可以容错运行的

try

    Network.DownloadFile("http://www.csindex.com.cn/sseportal/ps/zhs/hqjt/csi/syl/"+xls,ProjectPath +xls,"" ,"" ,True, 100000, True)
End try


 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


 回到顶部
帅哥哟,离线,有人找我吗?
xuezhe
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:1 积分:65 威望:0 精华:0 注册:2012/4/22 15:14:00
  发帖心情 Post By:2012/4/22 15:16:00 [只看该作者]

怎么做啊?没办法开始

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40556 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/22 17:28:00 [只看该作者]

尽量不要用!

 回到顶部
帅哥哟,离线,有人找我吗?
布莱克朱
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2012/4/22 19:46:00 [只看该作者]

楼主既然是下载,为什么不判断有无文件在FTP,有就下载,没有就取消呗.

 回到顶部
帅哥哟,离线,有人找我吗?
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/4/22 22:07:00 [只看该作者]

On Error Resume Next

可以用的


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40556 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/22 22:28:00 [只看该作者]

不到一定的水平,千万不要用这些东东,规避错误,可以通过严谨的判断来实现,否则,您会为此、为您的程序而烦恼的!

 回到顶部