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

私は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 に答える
1

try ブロックから変数を宣言し、finally ブロックが設定されているかどうかを確認します。

于 2008-11-20T10:28:34.013 に答える