Excepcion propia con codigo interno

04/07/2007 - 13:19 por ANT1 | Informe spam
Hola a todos, estaba interesado en crear una excepcion propia para
gestionar las excepciones o alertas que se podrian dar en mi app (que
un NIF de cliente se duplque o que no tenga el formato correcto y
demas).

En principio pense en usar la propia Excpetion o ApplicationException
al ver que tenian la propiedad Data (un idictionary), pero he visto
que esta propiedad solo dispone de metodo Get, no Set. ¿existe alguna
excepcion que se pueda modificar con algun parametro del estilo?, es
decir, una propiedad a la que pueda dar yo un valor para despues
recuperar y dependiendo de ese valor sacar una ventana de informacion
u otra (es para algo mas complejo que sacar solo el mensaje de error).

Habia pensado en algo asi:

public class ExceptionMia:ApplicationException

struct Mensaje
{
string titulo, alerta, mensaje;
image icono;
public Mensaje(string t, string a, string m, imagen i){ titulo = t;
alerta = a; mensaje = m; icono = i; }
}

Dictionary<int, Mensaje> Errores = new Dictionary>in, Mensaje>();
// Aqui llenaria los mensajes que me interesasen en el dictionary, por
ejemplo:
Errores.Add(0,"Error 0","Error En NIF", "El NIF introduccido no es
correcto, por favor revise su valor",
global::aplicacion.Properties.Resources.alerta);
Errores.Add(1,"Error 1","Error Cualquiera","Este es un error
cualquiera que se me
ocurre",global::aplicacion.Properties.Resources.error1);
// ... asi con todos los errores que desee ir añadiendo


private string titulo;

public string Titulo
{
set { titulo= value; }
get { return titulo; }
}

private string alerta;

public string Alerta
{
set { alerta= value; }
get { return alerta; }
}

private string mensaje;

public string Mensaje
{
set { mensaje = value; }
get { return mensaje; }
}


private image imagen;

public image Imagen
{
set { imagen = value; }
get { return imagen; }
}

public ExceptionMia(int codigo):base(null)
{
Mensaje aux = Mensajes[codigo];
this.Titulo = aux.titulo;
this.Alerta = aux.alerta;
this.Mensaje = aux.mensaje;
this.Imagen = aux.icono;
}

public ExceptionMia(int codigo, Exception innere):base(null, innere)
{
Mensaje aux = Mensajes[codigo];
this.Titulo = aux.titulo;
this.Alerta = aux.alerta;
this.Mensaje = aux.mensaje;
this.Imagen = aux.icono;
}

Me gustaria saber vuestra opinion, sobre todo porque no me gusta en
exceso, y no se si funcionaria, la parte del diccionario.

Un saludo.

Preguntas similare

Leer las respuestas

#16 RFOG
12/07/2007 - 11:47 | Informe spam
En Thu, 12 Jul 2007 11:33:19 +0200, ANT1 escribió:

Mostrar la cita
El constructor estático se llama él solo (bueno, el .NET lo llama), no
necesitas hacer nada más que definirlo y ya está. Cuando lo tengas hecho,
le pones un punto de interrupción y verás cómo se llama justo cuando
toques cualquier objeto de esa clase, y sólo una vez.

http://msdn2.microsoft.com/es-es/library/k9x6w0hc(VS.80).aspx

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Hay que escuchar a la razón, pero dejar hablar al sentimiento.
#17 ANT1
12/07/2007 - 12:51 | Informe spam
Muchas gracias RFOG, con todo esto calculo que pueda hacerme las
clases para manejar las excepciones perfectamente. Andaba yo con este
otro link (para el que le pueda interesar)

http://msdn2.microsoft.com/es-es/library/79b3xss3(vs.80).aspx

Pero el tuyo viene mucho mejor.

Si surge algun otro problema ya comentare por aqui.

Saludos.
#18 RFOG
12/07/2007 - 13:19 | Informe spam
En Thu, 12 Jul 2007 12:51:00 +0200, ANT1 escribió:

Mostrar la cita
La castaña de la MSDN es que está todo esturriado por mil sitios, a veces
lo tienes delante de las narices y no lo ves porque no buscas por la
palabra correcta.

Un superlibro de referencia (que es el consulto antes que la
documentación) es el "THe C# Programming Language" de Hejlsberg y otros,
que me recomendó en su momento Octavio, en pitinglis, claro está. Las
pocas veces que hago algo en C#, suelo intentarlo "a la" C++/CLI, y si no
me aclaro, entonces miro el libro citado (más que nada para confirmar que
estoy intentando usar algo que está en C++ pero no en C#, aunque a veces
me sorprendo).
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Hay que escuchar a la razón, pero dejar hablar al sentimiento.
#19 ANT1
12/07/2007 - 17:31 | Informe spam
Mostrar la cita
Ya, hay veces que para encontrar algo en el MSDN tienes que dar muchas
vueltas o ser muy ocurrente con la frase que buscas.

Mostrar la cita
Echare un ojo a ese libro, pero yo ya practicamente me dedico a los
foros, blgos y demas paginas de programacion.

Por cierto, todo el codigo montado como lo hablado hasta ahora
funciona perfectamente, y el metodo estatico comprobe lo de que se
cargase solo una vez y cierto es tambien.

Gracias por todo.
Ads by Google
Search Busqueda sugerida