Ist es legal und möglich, den Rückgabewert in einem für den Zugriff schließlich blockieren?

StackOverflow https://stackoverflow.com/questions/304847

Frage

Ich mag eine Zeichenfolge Usererror setzen, bevor eine Funktion zu verlassen, in Abhängigkeit von dem Rückkehrcode und Variable in der Funktion.

Im Moment habe ich:

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

Ist es möglich, Rückkehr RetType.FailedParse zu verwenden, dann ist dieser Zugang in der schließlich blockieren?

War es hilfreich?

Lösung

Die einzige wirkliche Möglichkeit, dies zu tun, in C # wäre, eine Variable zu Beginn des Verfahrens zu erklären, um den Wert zu halten - d. H

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

In VB Sie könnte der Lage sein, das Ergebnis direkt zugreifen - da IIRC irgendwie es wie die oben arbeitet (mit dem Methodennamen als „Ergebnis“) sowieso. Vorab: Ich bin wirklich keine VB Person ...

Andere Tipps

Deklarieren Sie die Variable aus dem try-Block, und prüfen Sie in der schließlich blockieren, wenn es eingestellt wurde.

Ich habe mich gefragt, ob in VB man kann (legal) zu tun:

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

Ich weiß Einstellung MyFunc = FAIL (als Hang-over von VB) legal ist, ist sie schreibgeschützt oder lesbar? Meine Sorge, dass dies eine schlechte Codierung als

if MyFunc = FAIL Then

ist zu ähnlich

if MyFunc() = FAIL Then

, die hat ganz andere Konsequenzen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top