Instrução GoTo
Ramifica incondicionalmente para uma linha especificada em um procedimento.
Sintaxe
GoTo line
Parte
line
Obrigatórios. Qualquer rótulo de linha.
Comentários
A instrução GoTo
só pode ramificar para linhas no procedimento no qual ela aparece. A linha deve ter um rótulo de linha ao qual GoTo
possa se referir. Para obter mais informações, consulte Como rotular instruções.
Observação
As instruções GoTo
podem dificultar a leitura e a manutenção do código. Sempre que possível, use uma estrutura de controle. Para obter mais informações, consulte Control Flow.
Você não pode usar uma instrução GoTo
para ramificar de fora de uma construção For
...Next
, For Each
...Next
, SyncLock
...End SyncLock
, Try
...Catch
...Finally
, With
...End With
, ou Using
...End Using
para um rótulo interno.
Ramificação e construções Try
Dentro de uma construção Try
...Catch
...Finally
, as regras a seguir se aplicam à ramificação com a instrução GoTo
.
Bloco ou região | Ramificando de fora para dentro | Ramificando de dentro para fora |
---|---|---|
Bloco Try |
Somente de um bloco Catch da mesma construção 1 |
Somente para fora de toda a construção |
Bloco Catch |
Nunca permitido | Somente para fora de toda a construção ou para o bloco Try da mesma construção 1 |
Bloco Finally |
Nunca permitido | Nunca permitido |
1 Se uma construção Try
...Catch
...Finally
estiver aninhada dentro de outra, um bloco Catch
pode ramificar-se no bloco Try
em seu próprio nível de aninhamento, mas não em nenhum outro bloco Try
. Uma construção aninhada Try
...Catch
...Finally
deve estar completamente contida em um bloco Try
ou Catch
da construção dentro da qual está aninhada.
A ilustração a seguir mostra uma construção Try
aninhada dentro de outra. Várias ramificações entre os blocos das duas construções são indicadas como válidas ou inválidas.
Exemplo
O exemplo a seguir usa a instrução GoTo
para ramificar para rótulos de linha em um procedimento.
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