以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问foxtable有没有容错语句  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=18942)

--  作者:ajim
--  发布时间:2012/4/22 13:25:00
--  请问foxtable有没有容错语句

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

try

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


--  作者:ybil
--  发布时间: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
--  发布时间:2012/4/22 15:16:00
--  
怎么做啊?没办法开始
--  作者:程兴刚
--  发布时间:2012/4/22 17:28:00
--  
尽量不要用!
--  作者:布莱克朱
--  发布时间:2012/4/22 19:46:00
--  
楼主既然是下载,为什么不判断有无文件在FTP,有就下载,没有就取消呗.
--  作者:飞
--  发布时间:2012/4/22 22:07:00
--  

On Error Resume Next

可以用的


--  作者:程兴刚
--  发布时间:2012/4/22 22:28:00
--  
不到一定的水平,千万不要用这些东东,规避错误,可以通过严谨的判断来实现,否则,您会为此、为您的程序而烦恼的!