## Why is this an issue?

Other than `Exit Select`, using an `Exit` statement is never a good idea.

`Exit Do`, `Exit For`, `Exit Try`, and `Exit While` will all result in unstructured control flow, i.e. spaghetti code.

`Exit Function`, `Exit Property`, and `Exit Sub` are all poor, less-readable substitutes for a simple `return`, and if used with code that should return a value (`Exit Function` and in some cases `Exit Property`) they could result in a `NullReferenceException`.

This rule raises an issue for all uses of `Exit` except `Exit Select` and `Exit Do` statements in loops without condition.

### Noncompliant code example

    Public Class Sample
      Dim condition As Boolean

      Public Sub MySub()
        If condition Then
          Exit Sub                  ' Noncompliant
        End If

        For index = 1 To 10
          If index = 5 Then
              Exit For               ' Noncompliant
          End If
          ' ...
        Next
      End Sub
      Function MyFunction() As Object
        ' ...
        MyFunction = 42
        Exit Function              ' Noncompliant
      End Function
    End Class

### Compliant solution

    Public Class Sample
      Dim condition As Boolean

      Public Sub MySub()
        If condition Then
            Return
        End If

        For index = 1 To 4
            ' ...
        Next
      End Sub
      Function MyFunction() As Object
        ' ...
        Return 42
      End Function
    End Class