Pregunta

Deseo establecer una cadena usererror antes de abandonar una función, dependiendo del código de retorno y la variable en la función.

Actualmente tengo:

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

¿Es posible usar return RetType.FailedParse, luego acceder a esto en el bloque finalmente?

¿Fue útil?

Solución

La única forma real de hacer esto en C # sería declarar una variable al comienzo del método para mantener el valor, es decir,

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

En VB, podría poder acceder al resultado directamente, ya que IIRC funciona como el anterior (con el nombre del método como " resultado ") de todos modos. Advertencia: realmente no soy una persona VB ...

Otros consejos

Declare la variable fuera del bloque try y verifique en el bloque finalmente si se ha establecido.

Me preguntaba si en VB uno podría (legalmente) hacer:

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

Sé que configurar MyFunc = FAIL es legal (como un bloqueo de VB), ¿es de solo escritura o legible? Me preocupa que sea una codificación deficiente como

if MyFunc = FAIL Then

es demasiado similar a

if MyFunc() = FAIL Then
¡

que tiene consecuencias muy diferentes!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top