GoTo (Instrucción)
Se bifurca incondicionalmente a una línea especificada de un procedimiento.
Sintaxis
GoTo line
Parte
line
Necesario. Cualquier etiqueta de línea.
Comentarios
La instrucción GoTo
solo puede bifurcarse a las líneas del procedimiento en el que aparece. La línea debe tener una etiqueta de línea a la que GoTo
pueda hacer referencia. Para obtener más información, consulte Procedimiento para: Aplicar etiquetas a las instrucciones.
Nota
Las instrucciones GoTo
pueden dificultar la lectura y el mantenimiento del código. Siempre que sea posible, use una estructura de control como alternativa. Para más información, consulte Control Flow.
No se puede usar una instrucción GoTo
para bifurcar desde fuera de una construcción For
...Next
, For Each
...Next
, SyncLock
...End SyncLock
, Try
...Catch
...Finally
, With
...End With
o Using
...End Using
a una etiqueta del interior.
Bifurcación y construcciones Try
Dentro de una construcción Try
...Catch
...Finally
, las siguientes reglas se aplican a la bifurcación con la instrucción GoTo
.
Bloque o región | Bifurcación al interior desde fuera | Bifurcación al exterior desde dentro |
---|---|---|
Bloque Try |
Solo desde un bloque Catch de la misma construcción 1 |
Solo al exterior de toda la construcción |
Bloque Catch |
Nunca se permite | Solo al exterior de toda la construcción, o al bloque Try de la misma construcción 1 |
Bloque Finally |
Nunca se permite | Nunca se permite |
1 Si una construcción Try
...Catch
...Finally
está anidada dentro de otra, un bloque Catch
puede bifurcarse en el bloque Try
en su propio nivel de anidamiento, pero no en ningún otro bloque Try
. Una construcción Try
...Catch
...Finally
anidada debe estar completamente contenida en un bloque Try
o Catch
de la construcción dentro de la cual está anidada.
En la ilustración siguiente se muestra una construcción Try
anidada dentro de otra. Varias ramas entre los bloques de las dos construcciones se indican como válidas o no válidas.
Ejemplo
En el ejemplo siguiente se usa la instrucción GoTo
para bifurcar las etiquetas de línea de un procedimiento.
Sub GoToStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
sampleString = "Number equals 1"
GoTo LastLine
Line2:
' The following statement never gets executed because number = 1.
sampleString = "Number equals 2"
LastLine:
' Write "Number equals 1" in the Debug window.
Debug.WriteLine(sampleString)
End Sub