在.NET中将函数标记为“不返回”

时间:2012-09-07 08:01:21

标签: .net exception

我在VB.NET中有一个方法,它只是投掷的帮手 例外。它将始终抛出异常而永不返回 但是,编译器不会将此函数检测为终止 代码路径,因此如果我使用,我会收到警告 稍后在代码中的变量,这些变量未通过异常代码路径初始化。

Function Foo(y as Integer) As Boolean
    dim x as boolean
    if y > 10
        x = 20
    else
        ThrowHelperFunction("Ouch")
    end if
    return x
End Function

警告是x未在所有代码路径上初始化。

3 个答案:

答案 0 :(得分:3)

我认为你不能改变这种行为。相反,你可以做类似的事情:

Function Foo(y as Integer) As Boolean
    dim x as boolean
    if y > 10
        x = 20
    else
        throw CreateExceptionHelperFunction("Ouch")
    end if
    return x
End Function

也就是说,辅助函数仍然可以进行一些处理。但它会返回异常而不是抛出它。

答案 1 :(得分:1)

尝试使用像这样的默认值初始化x。布尔值是值类型,不应该使用空值初始化。

Function Foo(y as Integer) As Boolean     
    dim x as boolean     
    x = 0
    if y > 10         
        x = 20     
    else         
        throw CreateExceptionHelperFunction("Ouch")     
    end if     
    return x 
End Function 

答案 2 :(得分:0)

尝试使用以下代码(使用Sub而不是Function)

Sub Foo(y As Integer)
    Dim x As Boolean
    If y > 10 Then
        x = 20
    Else
        ThrowHelperFunction("Ouch")
    End If
End Sub

感谢。