尝试捕获返回语句

时间:2011-10-06 20:23:26

标签: .net exception return

最近看到了一段有趣的代码,我的脑海中断言它就像我在TDWTF上看到的一样。

然而,在我开始更改代码之前,我没有写过,如果有理由,我想我会在这里问。

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

我的第一印象是,在同一行上没有其他操作的简单返回就不可能抛出异常,而且这段代码是不必要的。

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

是吗?如果是这样的话会发生什么情况呢?

2 个答案:

答案 0 :(得分:2)

不,我不认为这是可能的。编译器根本不知道此语句不会失败,因此无法发出警告。

答案 1 :(得分:1)

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