2011-10-06 45 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

好點,如果它是一個它有意義的財產。 –