2008-11-20 20 views
3

我希望在離開函數之前設置usererror字符串,具體取決於函數中的返回碼和變量。訪問finally塊中的返回值是否合法?

我目前有:

Dim RetVal as RetType 

try 
... 
if ... then 
    RetVal = RetType.FailedParse 
    end try 
endif 
... 

finally 
    select case RetVal 
     case ... 
      UserStr = ... 
    end select 
end try 

return RetVal 

是否可以使用回RetType.FailedParse,然後訪問這個在finally塊?

回答

4

在C#這樣做,這將是在方法開始時聲明一個變量來保存價值的唯一途徑 - 即

SomeType result = default(SomeType); // for "definite assignment" 
try { 
    // ... 
    return result; 
} 
finally { 
    // inspect "result" 
} 

在VB中,你可能能夠訪問直接結果 - 因爲IIRC它有點像上面的方法(方法名稱爲「結果」)無論如何。警告:我是真的不是VB的人...

+1

你是對的,VB將函數名稱視爲另一個局部變量。函數返回值是函數結束時這個神奇局部變量的任何值。 – pipTheGeek 2008-11-20 11:46:42

1

聲明變量出try塊,並檢查finally塊是否已設置。

+0

謝謝,那是我提供的代碼,問題是它是否可以訪問返回值。 – GalleySlave 2008-11-20 15:39:59

1

我想知道是否在VB中一個可能(合法)做:

Public Function MyFunc() as integer 
    Try 
     if DoSomething() = FAIL Then 
     return FAIL 
     end if 

    Finally 
     if MyFunc = FAIL then 
      Me.ErrorMsg = "failed" 
     endif 
    End Try 
End Function 

我知道設定MYFUNC = FAIL是合法的(作爲掛起了從VB),是隻寫或可讀?我擔心的是,這是編碼窮人

if MyFunc = FAIL Then 

是太相似了

if MyFunc() = FAIL Then 

其具有非常不同的後果!

+0

你實際上並沒有說這是有效的,它的確如此。添加`()`引起遞歸總是一個沒有必要參數的函數的問題,所以你只需要檢查它。 – 2012-03-07 09:47:24

相關問題