捕获异常错误

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

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

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


本页地址:http://www.foxtable.com/webhelp/topics/2070.htm