Мне было любопытно, я использую VS2010 и не разрешаю возврат в блоке finally. вот код, который я скомпилировал
Public Class Class1
Public Shared Function test() As String
Try
Return "OK"
Catch ex As Exception
Return "Catch"
Finally
test = "Finally"
End Try
End Function
End Class
Я скомпилировал DLL для просмотра MSIL, это выглядело довольно интересно, приведенный выше код в основном подвергается рефакторингу к этому:
Public Class Class2
Public Shared Function test() As String
Try
Try
test = "OK"
Catch ex As Exception
test = "Catch"
End Try
Finally
test = "Finally"
End Try
Return test
End Function
End Class
и, проверяя это, MSIL для двух вышеупомянутых классов абсолютно одинаков.