使用“On Error GoTo”时出现意外的控制流程,将其与“Try .... Catch”进行比较

时间:2014-08-01 09:35:47

标签: vb.net try-catch

"Try.... Catch"和" On Error GoTo"是VB.NET中的异常处理机制。那么他们之间有什么区别?

以下是什么原因?

  1. 一个区块将允许多个try..catch或多个On Error GoTo,但同一区块中将允许not both

  2. 以下代码:

    Private Sub check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles check.Click
    
        On Error GoTo l1
        On Error GoTo l2
        rt.LoadFile("e:\new\me.txt")
        l1:TextBox1.Text = "Not found"    
        l2:TextBox1.Text = "Not found"
    End Sub
    

    为什么在l2执行之前执行l1,如果找不到路径?

1 个答案:

答案 0 :(得分:5)

仅为遗留代码保留On Error GoTo构造。它在VB的后续版本中存在的唯一原因是使用旧的(但经过测试和工作的)代码更容易使用,而且变化很小。

没有理由将旧类型的错误处理与异常处理混合在一起。新编写的代码不应使用旧的错误处理。有意混淆它们在编译器中是不允许的。

当您使用On Error GoTo时,每个设置都将替换之前的设置,因此只有最后一个设置才会生效。