Control errores en SW

14/12/2005 - 19:00 por AOG | Informe spam
cHola,
Cómo puedo pasar masajes de error provocados en la capa de negocio a un
cliente de formulario Windows a través de un servicio Web (es una aplicación
distribuida utilizando Servicios Web), es decir, si se provoca un error, por
decir uno, error de división por cero en la capa de negocio, ¿como puedo
mostrar dicho error en el cliente? o ¿Cómo controlar dichos errores y
trasmitir a la capa del cliente?, es que no lo tengo claro como gestionar los
errores controlados o no controlados, que se provocan en la capa de negocio
habiendo una capa intermedia (Servicio Web) .
Un saludo

Preguntas similare

Leer las respuestas

#6 AOG
20/12/2005 - 10:04 | Informe spam
... perdona mi torpesa pero no te entiendo lo de "tener un sistema interno
tipo "switch" donde compruebas el código de error producido y lo comparas
con mi repositorio de errores personalizados mas comunes. En caso de no
encontrarlo, sacas un error genérico."
Me lo puedes explicar como si fuera para portes o ponerme un pequeño
ejemplo, te lo agradeceria.
Lo de enviar los errores al Visor de Suceso ya lo hago, y es una buena idea,
así cuando llama un usuario con un problema nada más hay que supervisar
dichos sucesos y ver lo errores producidos.

De nuevo un saludo.

"CESAR DE LA TORRE [MVP]" escribió:

Lo normal es tener un sistema interno tipo "switch" donde compruebas el
código de error producido y lo comparas con tu repositorio de errores
personalizados mas comunes. En caso de no encontrarlo, sacas un error
genérico.
PERO, LO IMPORTANTE es que si sacas errores genéricos, el error real y
completo lo saques en el VISOR de EVENTOS de Windows (Event Viewer), para que
si se produce un error, no "lo pierdas".
CESAR DE LA TORRE
Software Architect
[Microsoft MVP - XML Web Services]
[MCSE] [MCT]

Renacimiento
[Microsoft GOLD Certified Partner]


"AOG" wrote:

> Hola Cesar, de nuevo gracias.
> Perdóname no se si te he entendido bien según tu me dices que muestre un
> mensaje personalizado en el Catch pero yo no se de antemano el error que se
> ha provocado, es decir, que mensaje muestro si no se la causa del error, por
> ejemplo, si en un procedimiento hago varias cosas y una de ellas provoca el
> error debe de mostrar el mensaje de la excepción para indicar al usuario que
> error se ha provocado para que el pueda dar un remedio si tiene la
> posibilidad o sino notificar dicho error al administrado o desarrollador. Por
> ejemplo si hay que grabar en un disquete un archivo puede provocar varios
> errores, como el no haber insertado el disquete, que el disquete esté
> protegido, o esté roto, yo no puedo controlar todos los tipos de errores, lo
> cual el Catch seria de tipo genérico.
>
> No se si me he explicado bien, espero que lo entiendas mi problema.
>
> Un saludo
>
> "CESAR DE LA TORRE [MVP]" escribió:
>
> > En el Catch puedes mostrar un MessageBox con un error personalizado tuyo, y
> > sencillo para el usuario, y por otro lado, guardar el error completo en el
> > Event-Viewer, con las clases de .NET. Es muy sencillo.
> > CESAR DE LA TORRE
> > Software Architect
> > [Microsoft MVP - XML Web Services]
> > [MCSE] [MCT]
> >
> > Renacimiento
> > [Microsoft GOLD Certified Partner]
> >
> >
> > "AOG" wrote:
> >
> > > Hola,
> > > Gracias Cesar, lo he probado y funciona, pero te explico:
> > > Antes de todo, no se si te lo he comentado, y sino, quiero decir que estoy
> > > programando con VB 2005 profesional versión final.
> > > El mensaje que muestra en la capa de IU es poco atractivo para un usuario
> > > pues da mucha información sobre el error, solo quiero mostrar el mensaje en
> > > concreto. He visto MSDM VIDIO, y controla los errores utilizando la librería:
> > > Microsoft.ApplicationBlocks.ExceptionManagement.
> > > No se si utilizando esta librería solo me muestra el mensaje de error. He
> > > estando buscando información sobre esta librería y me ha surgido unas dudas.
> > > Esta librería es para VB 2003 o almeno no he encontrado una versión para VB
> > > 2005 y también he leído que Enterprise Library es el sucesor a esta librería
> > > para controlar las excepciones y otros servicio. He encontrado una versión
> > > Enterprise Library para VS 2005 de noviembre pero no se como funciona, mis
> > > dudas son:
> > > Utilizando estas librería me soluciona mi problema, alguien me podía decir
> > > como funciona o donde puedo buscar información donde exponga un ejemplo. Ya
> > > que la información que he encontrado aparte que está en ingles (mi ingles es
> > > muy limitado) no he encontrado ningún ejemplo como gestionar la excepciones
> > > (algo parecido a MSDM VIDIO).
> > >
> > > Un saludo.
> > >
Respuesta Responder a este mensaje
#7 CESAR DE LA TORRE [MVP]
20/12/2005 - 12:18 | Informe spam
Te mando un ejemplo de código. Ten en cuenta simplemente la idea. No lo he
compilado, puede tener algún error, OK?
La idea básica, a implementar en la Capa de Presentación (Winforms o
Webforms) de una aplicación, es la siguiente:
try
{
//ejecución de tu código en la 'Capa de presentación', WinForms o WebForms.
}
catch(Exception e)
{
string mensaje;
//Aquí usas un 'if' o un 'switch' dependiendo del número de casos mas
probables
if (e.Number == 2627)
{
//Normalmente, en lugar de escribirlo aquí 'hardcoded' los mensajes de
error personalizados se sacan de los RESOURCES-strings del proyecto de Visual
Studio
mensaje = "Error: Ya existen datos con la misma clave (o el mensaje
personalizado que se quiera).";
}
else
{
// mensaje = "Error: Se ha producido un error, contacte con el servicio
de soporte de la aplicación (etc...).";

//Normalmente, en lugar de escribirlo como la línea de arriba 'hardcoded'
//los mensajes de error personalizados se sacan de los RESOURCES-strings
del proyecto de Visual Studio
ResourceManager rm = new ResourceManager("Exceptions",
Assembly.GetExecutingAssembly());
// 'cultura' actual
CultureInfo ci = Thread.CurrentThread.CurrentCulture;

// Obtenemos el valor del string en los recursos del proyecto
mensaje = rm.GetString(key, ci);

}

//Guardar el error real en el Event Viewer aquí.
//... Líneas de código para guardar error completo en el Event-Viewer

//Mostramos un error personalizado al usuario
MessageBox.Show(mensaje);
}
finally
{
//operaciones que quieras que siempre se ejecuten, como limpiezas, cerrar
conexiones, etc.
}

Por otro lado, si vas a trabajar en un proyecto grande, entonces mejor usa
el Building Block de Exception-Handling de Microsoft.
CESAR DE LA TORRE
Software Architect
[Microsoft MVP - XML Web Services]
[MCSE] [MCT]

Renacimiento
[Microsoft GOLD Certified Partner]


"AOG" wrote:

... perdona mi torpesa pero no te entiendo lo de "tener un sistema interno
tipo "switch" donde compruebas el código de error producido y lo comparas
con mi repositorio de errores personalizados mas comunes. En caso de no
encontrarlo, sacas un error genérico."
Me lo puedes explicar como si fuera para portes o ponerme un pequeño
ejemplo, te lo agradeceria.
Lo de enviar los errores al Visor de Suceso ya lo hago, y es una buena idea,
así cuando llama un usuario con un problema nada más hay que supervisar
dichos sucesos y ver lo errores producidos.

De nuevo un saludo.

"CESAR DE LA TORRE [MVP]" escribió:

> Lo normal es tener un sistema interno tipo "switch" donde compruebas el
> código de error producido y lo comparas con tu repositorio de errores
> personalizados mas comunes. En caso de no encontrarlo, sacas un error
> genérico.
> PERO, LO IMPORTANTE es que si sacas errores genéricos, el error real y
> completo lo saques en el VISOR de EVENTOS de Windows (Event Viewer), para que
> si se produce un error, no "lo pierdas".
> CESAR DE LA TORRE
> Software Architect
> [Microsoft MVP - XML Web Services]
> [MCSE] [MCT]
>
> Renacimiento
> [Microsoft GOLD Certified Partner]
>
>
> "AOG" wrote:
>
> > Hola Cesar, de nuevo gracias.
> > Perdóname no se si te he entendido bien según tu me dices que muestre un
> > mensaje personalizado en el Catch pero yo no se de antemano el error que se
> > ha provocado, es decir, que mensaje muestro si no se la causa del error, por
> > ejemplo, si en un procedimiento hago varias cosas y una de ellas provoca el
> > error debe de mostrar el mensaje de la excepción para indicar al usuario que
> > error se ha provocado para que el pueda dar un remedio si tiene la
> > posibilidad o sino notificar dicho error al administrado o desarrollador. Por
> > ejemplo si hay que grabar en un disquete un archivo puede provocar varios
> > errores, como el no haber insertado el disquete, que el disquete esté
> > protegido, o esté roto, yo no puedo controlar todos los tipos de errores, lo
> > cual el Catch seria de tipo genérico.
> >
> > No se si me he explicado bien, espero que lo entiendas mi problema.
> >
> > Un saludo
> >
> > "CESAR DE LA TORRE [MVP]" escribió:
> >
> > > En el Catch puedes mostrar un MessageBox con un error personalizado tuyo, y
> > > sencillo para el usuario, y por otro lado, guardar el error completo en el
> > > Event-Viewer, con las clases de .NET. Es muy sencillo.
> > > CESAR DE LA TORRE
> > > Software Architect
> > > [Microsoft MVP - XML Web Services]
> > > [MCSE] [MCT]
> > >
> > > Renacimiento
> > > [Microsoft GOLD Certified Partner]
> > >
> > >
> > > "AOG" wrote:
> > >
> > > > Hola,
> > > > Gracias Cesar, lo he probado y funciona, pero te explico:
> > > > Antes de todo, no se si te lo he comentado, y sino, quiero decir que estoy
> > > > programando con VB 2005 profesional versión final.
> > > > El mensaje que muestra en la capa de IU es poco atractivo para un usuario
> > > > pues da mucha información sobre el error, solo quiero mostrar el mensaje en
> > > > concreto. He visto MSDM VIDIO, y controla los errores utilizando la librería:
> > > > Microsoft.ApplicationBlocks.ExceptionManagement.
> > > > No se si utilizando esta librería solo me muestra el mensaje de error. He
> > > > estando buscando información sobre esta librería y me ha surgido unas dudas.
> > > > Esta librería es para VB 2003 o almeno no he encontrado una versión para VB
> > > > 2005 y también he leído que Enterprise Library es el sucesor a esta librería
> > > > para controlar las excepciones y otros servicio. He encontrado una versión
> > > > Enterprise Library para VS 2005 de noviembre pero no se como funciona, mis
> > > > dudas son:
> > > > Utilizando estas librería me soluciona mi problema, alguien me podía decir
> > > > como funciona o donde puedo buscar información donde exponga un ejemplo. Ya
> > > > que la información que he encontrado aparte que está en ingles (mi ingles es
> > > > muy limitado) no he encontrado ningún ejemplo como gestionar la excepciones
> > > > (algo parecido a MSDM VIDIO).
> > > >
> > > > Un saludo.
> > > >
Respuesta Responder a este mensaje
#8 AOG
21/12/2005 - 09:11 | Informe spam
Muchas gracias, entiendo lo que me quieres decir
Un saludo

"CESAR DE LA TORRE [MVP]" escribió:

Te mando un ejemplo de código. Ten en cuenta simplemente la idea. No lo he
compilado, puede tener algún error, OK?
La idea básica, a implementar en la Capa de Presentación (Winforms o
Webforms) de una aplicación, es la siguiente:
try
{
//ejecución de tu código en la 'Capa de presentación', WinForms o WebForms.
}
catch(Exception e)
{
string mensaje;
//Aquí usas un 'if' o un 'switch' dependiendo del número de casos mas
probables
if (e.Number == 2627)
{
//Normalmente, en lugar de escribirlo aquí 'hardcoded' los mensajes de
error personalizados se sacan de los RESOURCES-strings del proyecto de Visual
Studio
mensaje = "Error: Ya existen datos con la misma clave (o el mensaje
personalizado que se quiera).";
}
else
{
// mensaje = "Error: Se ha producido un error, contacte con el servicio
de soporte de la aplicación (etc...).";

//Normalmente, en lugar de escribirlo como la línea de arriba 'hardcoded'
//los mensajes de error personalizados se sacan de los RESOURCES-strings
del proyecto de Visual Studio
ResourceManager rm = new ResourceManager("Exceptions",
Assembly.GetExecutingAssembly());
// 'cultura' actual
CultureInfo ci = Thread.CurrentThread.CurrentCulture;

// Obtenemos el valor del string en los recursos del proyecto
mensaje = rm.GetString(key, ci);

}

//Guardar el error real en el Event Viewer aquí.
//... Líneas de código para guardar error completo en el Event-Viewer

//Mostramos un error personalizado al usuario
MessageBox.Show(mensaje);
}
finally
{
//operaciones que quieras que siempre se ejecuten, como limpiezas, cerrar
conexiones, etc.
}

Por otro lado, si vas a trabajar en un proyecto grande, entonces mejor usa
el Building Block de Exception-Handling de Microsoft.
CESAR DE LA TORRE
Software Architect
[Microsoft MVP - XML Web Services]
[MCSE] [MCT]

Renacimiento
[Microsoft GOLD Certified Partner]


"AOG" wrote:

> ... perdona mi torpesa pero no te entiendo lo de "tener un sistema interno
> tipo "switch" donde compruebas el código de error producido y lo comparas
> con mi repositorio de errores personalizados mas comunes. En caso de no
> encontrarlo, sacas un error genérico."
> Me lo puedes explicar como si fuera para portes o ponerme un pequeño
> ejemplo, te lo agradeceria.
> Lo de enviar los errores al Visor de Suceso ya lo hago, y es una buena idea,
> así cuando llama un usuario con un problema nada más hay que supervisar
> dichos sucesos y ver lo errores producidos.
>
> De nuevo un saludo.
>
> "CESAR DE LA TORRE [MVP]" escribió:
>
> > Lo normal es tener un sistema interno tipo "switch" donde compruebas el
> > código de error producido y lo comparas con tu repositorio de errores
> > personalizados mas comunes. En caso de no encontrarlo, sacas un error
> > genérico.
> > PERO, LO IMPORTANTE es que si sacas errores genéricos, el error real y
> > completo lo saques en el VISOR de EVENTOS de Windows (Event Viewer), para que
> > si se produce un error, no "lo pierdas".
> > CESAR DE LA TORRE
> > Software Architect
> > [Microsoft MVP - XML Web Services]
> > [MCSE] [MCT]
> >
> > Renacimiento
> > [Microsoft GOLD Certified Partner]
> >
> >
> > "AOG" wrote:
> >
> > > Hola Cesar, de nuevo gracias.
> > > Perdóname no se si te he entendido bien según tu me dices que muestre un
> > > mensaje personalizado en el Catch pero yo no se de antemano el error que se
> > > ha provocado, es decir, que mensaje muestro si no se la causa del error, por
> > > ejemplo, si en un procedimiento hago varias cosas y una de ellas provoca el
> > > error debe de mostrar el mensaje de la excepción para indicar al usuario que
> > > error se ha provocado para que el pueda dar un remedio si tiene la
> > > posibilidad o sino notificar dicho error al administrado o desarrollador. Por
> > > ejemplo si hay que grabar en un disquete un archivo puede provocar varios
> > > errores, como el no haber insertado el disquete, que el disquete esté
> > > protegido, o esté roto, yo no puedo controlar todos los tipos de errores, lo
> > > cual el Catch seria de tipo genérico.
> > >
> > > No se si me he explicado bien, espero que lo entiendas mi problema.
> > >
> > > Un saludo
> > >
> > > "CESAR DE LA TORRE [MVP]" escribió:
> > >
> > > > En el Catch puedes mostrar un MessageBox con un error personalizado tuyo, y
> > > > sencillo para el usuario, y por otro lado, guardar el error completo en el
> > > > Event-Viewer, con las clases de .NET. Es muy sencillo.
> > > > CESAR DE LA TORRE
> > > > Software Architect
> > > > [Microsoft MVP - XML Web Services]
> > > > [MCSE] [MCT]
> > > >
> > > > Renacimiento
> > > > [Microsoft GOLD Certified Partner]
> > > >
> > > >
> > > > "AOG" wrote:
> > > >
> > > > > Hola,
> > > > > Gracias Cesar, lo he probado y funciona, pero te explico:
> > > > > Antes de todo, no se si te lo he comentado, y sino, quiero decir que estoy
> > > > > programando con VB 2005 profesional versión final.
> > > > > El mensaje que muestra en la capa de IU es poco atractivo para un usuario
> > > > > pues da mucha información sobre el error, solo quiero mostrar el mensaje en
> > > > > concreto. He visto MSDM VIDIO, y controla los errores utilizando la librería:
> > > > > Microsoft.ApplicationBlocks.ExceptionManagement.
> > > > > No se si utilizando esta librería solo me muestra el mensaje de error. He
> > > > > estando buscando información sobre esta librería y me ha surgido unas dudas.
> > > > > Esta librería es para VB 2003 o almeno no he encontrado una versión para VB
> > > > > 2005 y también he leído que Enterprise Library es el sucesor a esta librería
> > > > > para controlar las excepciones y otros servicio. He encontrado una versión
> > > > > Enterprise Library para VS 2005 de noviembre pero no se como funciona, mis
> > > > > dudas son:
> > > > > Utilizando estas librería me soluciona mi problema, alguien me podía decir
> > > > > como funciona o donde puedo buscar información donde exponga un ejemplo. Ya
> > > > > que la información que he encontrado aparte que está en ingles (mi ingles es
> > > > > muy limitado) no he encontrado ningún ejemplo como gestionar la excepciones
> > > > > (algo parecido a MSDM VIDIO).
> > > > >
> > > > > Un saludo.
> > > > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida