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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Lazarte Federico
11/04/2007 - 21:11 | Informe spam
On 11 abr, 15:57, "Alberto Poblacion" <earthling-
wrote:
"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.- Ocultar texto de la cita -

- Mostrar texto de la cita -



Como quedaria entonces el constructor de la clase madre? es donde me
estoy bloqueando ahora :(
Gracias.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
11/04/2007 - 22:33 | Informe spam
"Lazarte Federico" wrote in message
news:
Como quedaria entonces el constructor de la clase madre? es donde me
estoy bloqueando ahora :(



public abstract class ExceptionIO :System.Exception
{
public ExceptionIO(string texto): base(texto) {}
...
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida