description | title | ms.date | f1_keywords | helpviewer_keywords | ms.assetid | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Learn more about: GoTo Statement |
GoTo Statement |
07/20/2015 |
|
|
313274c2-8ab3-4b9c-9ba3-0fd6798e4f6d |
Branches unconditionally to a specified line in a procedure.
GoTo line
line
Required. Any line label.
The GoTo
statement can branch only to lines in the procedure in which it appears. The line must have a line label that GoTo
can refer to. For more information, see How to: Label Statements.
Note
GoTo
statements can make code difficult to read and maintain. Whenever possible, use a control structure instead. For more information, see Control Flow.
You cannot use a GoTo
statement to branch from outside a For
...Next
, For Each
...Next
, SyncLock
...End SyncLock
, Try
...Catch
...Finally
, With
...End With
, or Using
...End Using
construction to a label inside.
Within a Try
...Catch
...Finally
construction, the following rules apply to branching with the GoTo
statement.
Block or region | Branching in from outside | Branching out from inside |
---|---|---|
Try block |
Only from a Catch block of the same construction 1 |
Only to outside the whole construction |
Catch block |
Never allowed | Only to outside the whole construction, or to the Try block of the same construction 1 |
Finally block |
Never allowed | Never allowed |
1 If one Try
...Catch
...Finally
construction is nested within another, a Catch
block can branch into the Try
block at its own nesting level, but not into any other Try
block. A nested Try
...Catch
...Finally
construction must be contained completely in a Try
or Catch
block of the construction within which it is nested.
The following illustration shows one Try
construction nested within another. Various branches among the blocks of the two constructions are indicated as valid or invalid.
The following example uses the GoTo
statement to branch to line labels in a procedure.
[!code-vbVbVbalrStatements#31]