重试异常代码会导致编译器警告

时间:2016-12-09 22:46:30

标签: vb.net visual-studio

我的重试代码出错了。 这是我的代码的精简版:

Sub test()
    Dim var As String
    Dim retries As Integer = 0
    Dim wasSuccess As Boolean = False

    Do
        Try
            var = "test"
            wasSuccess = True
        Catch
            If retries = 0 Then
                retries = 1
            Else
                Exit Sub
            End If
        End Try
    Loop Until wasSuccess

    Console.Write(var)
End Sub

问题是我在do循环代码块之后第一次引用变量var时得到一个编译警告“在分配值之前使用”

有关如何防止这种情况的任何建议吗?

1 个答案:

答案 0 :(得分:1)

编译警告不是错误。虽然,在您的项目选项中,您可以选择"将警告视为错误"。如果选择了该选项,则编译将失败。如果你愿意,可以取消选中它。由Console.Write(var)引起的错误。因为对于vb编译器,不确定赋值是否会在Try - 块下发生。因此,它将该行和var视为未分配。如果你Dim var As String = String.Empty,它应该消失。

以下指的是OP原始代码。 OP因为改变了代码 你的代码对我来说似乎并不合适。应该是这样的

Dim maxAttempts As Integer = 10
Dim attempts As Integer = 0

While Not success
    attempts += 1
    Try
        result = SubThatSumtimesResultsInException()
        success = True
    Catch
    End Try

    If attempts = maxAttempts Then Exit While
End While

虽然作为讨论,您可以重新构建success = True而不是Exit While,因为坦率地说,如果你达到这条线,你就会获得成功。但话又说回来,你需要保留success,因为以任何一种方式退出循环,你将能够判断它是否成功,因此我保留了它。