最近看到了一段有趣的代码,我的脑海中断言它就像我在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
我的第一印象是,在同一行上没有其他操作的简单返回就不可能抛出异常,而且这段代码是不必要的。
然而没有关于无法访问代码的编译器警告,所以它确实让我想知道它是否可能。
是吗?如果是这样的话会发生什么情况呢?答案 0 :(得分:2)
不,我不认为这是可能的。编译器根本不知道此语句不会失败,因此无法发出警告。
答案 1 :(得分:1)
如果SomeResult是属性,则没有理由相信它不会抛出异常。即使它是“this”的字段,也可以通过“this”作为空引用来调用方法。可以肯定的是,大多数此类情况都表明一个足够严重的问题,即该方法不应该通过返回null本身来试图混淆,但至少可以执行catch。