Exepciones personalizadas

11/04/2007 - 19:29 por Lazarte Federico | Informe spam
Tengo una jerarkia de clases, de la siguiente manera:

public abstract class ExceptionIO :System.Exception
{


~DMAExceptionIO()
{

}

public virtual void Dispose()
{

}

}//end ExceptionIO



public class ExceptionDB:ExceptionIO
{
public ExceptionDB() {}
public ExceptionDB(string message) {}
public ExceptionDB(string message, Exception inner)
{}
public ExceptionDB(SerializationInfo info,
StreamingContext context)
{}


}//end ExceptionDB


y las voy lanzando con un case similar al siguiente:


stwith (exep)
case 1
throw(new ExceptionDB("No se pudo conectar a la BD"));
case 2
throw(new ExceptionDBDataNull("Los Datos Enviados no
pueden
ser nulos"));


Ahora todo bien, lanzo la exepcion de mi programa y genera la que
corresponde segun el numero que le paso.La idea es devolver un objeto
tipo exepcion para que el usuario y le muestre el mensaje
personalizado (("No se pudo conectar a la BD"). Hasta ahora las
exepciones las catcheaba, pero, me mostraba un mensaje como este "A
ExceptionDB exeption was trown).
Alguien sabe como lanzar estas exepciones personalizadas?.
Desde ya muchas gracias.
 

Leer las respuestas

#1 Alberto Poblacion
11/04/2007 - 20:57 | Informe spam
"Lazarte Federico" wrote in message
news:
public class ExceptionDB:ExceptionIO
{
public ExceptionDB() {}
public ExceptionDB(string message) {}


...
}//end ExceptionDB
...
throw(new ExceptionDB("No se pudo conectar a la BD"));
...
La idea es devolver un objeto
tipo exepcion para que el usuario y le muestre el mensaje
personalizado (("No se pudo conectar a la BD"). Hasta ahora las
exepciones las catcheaba, pero, me mostraba un mensaje como este "A
ExceptionDB exeption was trown).
Alguien sabe como lanzar estas exepciones personalizadas?.




Están bien lanzadas. Lo que pasa es que para que el texto se propague
hasta el programa llamante, tienes que guardarlo dentro de la excepción. Con
los constructores vacíos que tienes ahora, el texto se pierde. Lo más
sencillo es que llames al contructor base asi:

public ExceptionDB(string message):base(message) {}

Y lógicamente lo mismo tienes que hacer en el constructor de la clase
madre para que a su vez le transmita el string al constructor del
System.Exception.

Preguntas similares