我的重试代码出错了。 这是我的代码的精简版:
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时得到一个编译警告“在分配值之前使用”
有关如何防止这种情况的任何建议吗?
答案 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
,因为以任何一种方式退出循环,你将能够判断它是否成功,因此我保留了它。