Domanda

Desidero impostare una stringa usererror prima di lasciare una funzione, a seconda del codice di ritorno e della variabile nella funzione.

Al momento ho:

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

È possibile utilizzare return RetType.FailedParse, quindi accedervi nel blocco finally?

È stato utile?

Soluzione

L'unico vero modo per farlo in C # sarebbe dichiarare una variabile all'inizio del metodo per contenere il valore - cioè

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

In VB, potresti essere in grado di accedere direttamente al risultato - poiché IIRC funziona in qualche modo come sopra (con il nome del metodo come "risultato"). Avvertenza: sono davvero non una persona VB ...

Altri suggerimenti

Dichiara la variabile fuori dal blocco try e controlla se il blocco finally è stato impostato.

Mi chiedevo se in VB si potesse (legalmente) fare:

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

So che l'impostazione di MyFunc = FAIL è legale (come hang-over da VB), è di sola scrittura o leggibile? La mia preoccupazione è che questo sia un codice scadente come

if MyFunc = FAIL Then

è troppo simile a

if MyFunc() = FAIL Then

che ha conseguenze molto diverse!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top