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.

Graphic diagram of branching in Try constructions

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

Confira também