3

我希望在离开函数之前设置一个 usererror 字符串,具体取决于函数中的返回码和变量。

我目前有:

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

是否可以使用 return RetType.FailedParse,然后在 finally 块中访问它?

4

3 回答 3

4

在 C# 中这样做的唯一真正方法是在方法的开头声明一个变量来保存值 - 即

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

在 VB 中,您也许可以直接访问结果 - 因为 IIRC 它有点像上面的工作方式(方法名称为“结果”)。警告:我真的不是 VB 人...

于 2008-11-20T10:18:40.260 回答
1

从 try 块中声明变量,并检查 finally 块是否已设置。

于 2008-11-20T10:28:34.013 回答
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

这有非常不同的后果!

于 2008-12-05T14:52:43.273 回答