捕获异常错误
有些错误很难事先判断,例如对于下面的代码:
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
无论从哪个方面来说,第一段的质量和效率都好过第二段。