2011-10-06 71 views
0

最近看到一段有趣的代码,我的脑海里很快就判断出它就像我在TDWTF上看到的那样。试着抓住一个return语句

但是,在我开始更改代码之前,我没有写信,如果有任何理由,我想我会问这里。

public function SomeFunction() As SomeType 
    Dim someResult As New SomeType 

    // Some code here, where some result can't become nothing. 

    try 
     return someResult 
    catch ex As Exception 
     // Some logging code 

     return Nothing 
    end try 
end function 

我的第一印象是,它会与在同一行中没有其他操作的简单回归抛出异常是不可能的,而这种代码是不必要的。

但是没有关于无法访问的代码的编译器警告,所以它确实让我想知道它是否可能。

是吗?如果是这样,会发生什么情况?

+1

这不是一个很好的理由。也许只是一个错字。 –

+2

这是一种可能性,也许在Try块中有更多的代码被删除,开发人员并没有想到要删除整个try/catch。 –

回答

2

不,我不认为这是可能的。编译器根本不知道这个语句不能失败,所以它不能发出警告。

1

如果SomeResult是一个属性,没有理由相信它不能抛出异常。即使它是“this”的字段,也可以使用“this”作为空引用来调用方法。可以肯定的是,大多数这样的情况将表明一个非常严重的问题,即该方法不应该通过返回null来混淆,但至少可以执行catch。

+0

好点,如果它是一个它有意义的财产。 –