Devolver el foco a una linea de codigo

17/05/2005 - 18:53 por Valeria | Informe spam
Hola amigos!!

Alguien sabe como obligar la ejecución de una linea de codigo en VB.NET ??
Resulta que tengo el siguiente problema: estoy usando el Application Block
de Excepciones y cuando lanzo la excepción con esta linea: Throw New
ApplicationException(xMensaje) , el foco no regresa a la linea siguiente en
donde hago un RollBack de una transacción...Como hago para regresar el foco
a esa linea y hacer que se ejecute ?
Me pueden ayudar por favor??

Gracias !!

Valeria

Preguntas similare

Leer las respuestas

#1 Bruce Wood
17/05/2005 - 21:26 | Informe spam
Puedes usar

try
{
... codigos ...
throw new ApplicationException(xMensaje);
}
finally
{
...RollBack()
... codigos ...
}

la ejecución siempre va a pasar para la parte "finally".
Respuesta Responder a este mensaje
#2 Valeria
17/05/2005 - 23:32 | Informe spam
Hola Bruce!

Muchas gracias por tu respuesta. No puedo usar el finally para colocar el
rollback porque el finally siempre se ejecuta y no siempre necesito hacer un
rollback, en los casos donde no se lance una excepción debo hacer un Commit
para la transacción. Tienes otra sugerencia que me puedas dar?? =)
Gracias por tu colaboración.!!

Valeria


"Bruce Wood" escribió en el mensaje
news:
Puedes usar

try
{
... codigos ...
throw new ApplicationException(xMensaje);
}
finally
{
...RollBack()
... codigos ...
}

la ejecución siempre va a pasar para la parte "finally".
Respuesta Responder a este mensaje
#3 Tristan
18/05/2005 - 00:03 | Informe spam
No se si entiendo bien tu duda. Con tu código tal y como está escrito,
siempre se ejecutará la excepción. Imagino que te faltará alguna condición:

try
{
... codigos ...

if no se produce excpción
...Commit
else
throw new ApplicationException(xMensaje);
}
catch
{
...RollBack
}


Si no te he entendido bien, como regla general en programación estructurada,
la forma de enviar el foco de ejecución hacia adelante es mediante una
sentencia condicional, que puede por ejemplo utilizar un switch como
condición. Para enviarlo hacia atrás se utilizan las sentencias iterativas:
For, While, etc... Entre ambos grupos de sentencias se puede llevar la
ejecución a cualquier punto.

También puedes utilizar la sentencia GoTo, aunque en ese caso ya te harás
una idea de lo que pensará el que vea tu código ;-)

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Bruce Wood
18/05/2005 - 07:25 | Informe spam
Pruebe así:

bool exito = false;
try
{
... codigos ...
throw new ApplicationException(xMensaje)­;
... codigos ...
exito = true;
}
finally
{
if (exito)
{
Commit();
}
else
{
RollBack();
}
}

Por que siempre quieres hacer o Commit o RollBack, entonces ponerlos en
"finally" asigura que siempre va hacer uno o otro
Respuesta Responder a este mensaje
#5 Valeria
18/05/2005 - 22:53 | Informe spam
Tristan y Bruce,

Muchas gracias por sus ideas, con ambas se que puedo solucionar mi
problema..

Su colaboracion es muy valiosa! Gracias =)

Valeria



"Bruce Wood" escribió en el mensaje
news:
Pruebe así:

bool exito = false;
try
{
... codigos ...
throw new ApplicationException(xMensaje)­;
... codigos ...
exito = true;
}
finally
{
if (exito)
{
Commit();
}
else
{
RollBack();
}
}

Por que siempre quieres hacer o Commit o RollBack, entonces ponerlos en
"finally" asigura que siempre va hacer uno o otro
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida