2 preguntas

20/09/2004 - 00:48 por 44r0x0r44 | Informe spam
1) como se escribe el caracter comilla (") en VB.NET? ya os
adelanto que """c no es ;)

2) cuando creo excepciones para mis clases, creo (dentro de
la clase) una clase que hereda de Exception pero cuando
quiero establecer el "Message" de mi excepcion
personalizada me indica el depurador que "Message" es una
propiedad de solo lectura, ¿como puedo personalizar el
"Message" de mis excepciones?... de momento estoy
sobreescribiendo ToSTring()

Gracias por adelantado a los miembros del grupo.

Preguntas similare

Leer las respuestas

#6 44r0x0r44
23/09/2004 - 15:55 | Informe spam
Gracias!

Te juro que me ha dejado perplejo la solución de .NET para
poner comillas dobles (eso no quiere decir que me guste :)
esperaba algo asi como secuencias de escape.

La solución de usar el constructor de la base para mis
excepciones personalizadas funciona, 1000K gracias.


Ok,

por cierto, son cuatro comillas porque la primera y la


ultima sirven de
delimitadores y las dobles comillas representan en


realidad una, por
ejemplo, si quieres poner en una cadena
Esta es "una" prueba

tendriamos que escribir:
"Esta es ""una""prueba"


Sobre lo segundo:

Class PersonalizedException : Inherits Exception
Public Sub New()
MyBase.New("Excepcion personalizada")
End Sub
End Class


Saludos
Pedro Luna, MVP
Gye, Ecu


escribió en el mensaje
news:411101c49f5d$c35db610$
Cuadruple comillas!! quien lo diria!!
Gracias.

Parece que me expliqué mal en mi segunda pregunta, lo que
tengo es:

Class MyClass

Class PersonalizedException : Inherits Exception
Public Sub New()
'Esto no se puede hacer, Message es de
'solo lectura:
Me.Message = "Excepcion personalizada"
End Sub
End Class

'código
'más código
'mucho código

End Class

Cuando hago excepciones personalizadas no me deja
personalizar el Message, ¿hay alguna manera de hacerlo?


1) como se escribe el caracter comilla (") en VB.NET? ya os




adelanto que """c no es ;)

En realidad tendrias que indicar cuatro comillas dobles,


""""c.

2) cuando creo excepciones para mis clases, creo








(dentro de
la clase) una clase que hereda de Exception pero cuando

Throw New NullReferenceException("Deberias crear la


instancia")


Saludos
Pedro Luna, MVP
Gye, Ecu



"44r0x0r44" escribió en el


mensaje
news:287701c49e9a$bec96b80$
1) como se escribe el caracter comilla (") en VB.NET? ya os
adelanto que """c no es ;)

2) cuando creo excepciones para mis clases, creo (dentro de
la clase) una clase que hereda de Exception pero cuando
quiero establecer el "Message" de mi excepcion
personalizada me indica el depurador que "Message" es una
propiedad de solo lectura, ¿como puedo personalizar el
"Message" de mis excepciones?... de momento estoy
sobreescribiendo ToSTring()

Gracias por adelantado a los miembros del grupo.


.





.

Respuesta Responder a este mensaje
#7 Fco. Javier Bedoya
24/09/2004 - 00:32 | Informe spam
Hola :
Tu planteamiento me parece correcto, el problema es que yo para estas cosas
soy muy "especialito".
Por ejemplo: Si anidas excepciones, entiendo que la excepción es lanzada y
tratada únicamente por la clase que la contiene, por tanto, veo un poco
innecesario la definición de la excepción.
Si la excepción es publica, pero está contenida en una clase, deberás
definir métodos que la expongan al resto de las clases del proyecto (si es
necesario), aumentando así la complejidad (o cuando menos la legibilidad del
código)
En el caso de que la excepción sea privada, solo podrá ser tratada por la
clase que la contiene, impidiendo que las clases superiores puedan tratar
convenientemente la excepción. (Podrían interceptarla con un try/catch
Exception, pero esto generaliza, y tal vez, la excepción anidada en
particular, tenga un tratamiento especifico)
Luego, está el mantenimiento de las excepciones, yo soy una persona muy dada
a ir haciendo "retoques" a medida que voy avanzando el proyecto, y la última
modificación que le hice a mi proyecto actual, es la de escribir los errores
automáticamente en el disco (antes lo hacia en el contenedor de sucesos), y
el código para hacer esto, lo tengo en la misma clase, como la excepción es
compartida por varias clases (se entiende, que constituye un archivo por si
misma) el cambio me resultó más fácil.

Pero, esto no significa que tu planteamiento sea incorrecto, ni son motivos
inalienables para cambiar tu política de desarrollo.

Un saludo.


Fco. Javier Bedoya
Web : http://javierbedoya.iespana.es
Para responder mis mensajes en las UseNet, quite ANTI SPAM
de la dirección de correo.
"44r0x0r44" escribió en el mensaje
news:22fd01c4a167$dd97e800$
Muchisimas gracias, es la primera vez que recibo una
respuesta tan, clara, concisa y amable (salvo por las pocas
que me ha dedicado DJMIAO)

Lo he provado y funciona, pero hay algo que comentas que me
ha llamado la atención:

No obstante, considero que sería
mejor no anidar la excepción
en la clase, pues podrías tener
dificultades a la hora de tratar
el error en cualquier
otra parte de tu proyecto.



Te explico mi planteamiento; cuando pienso en crear una
nueva clase las preguntas que me hago son: ¿Cual será la
mision de esta clase?, en base de esa mision ¿Que métodos
debe tener?, además de preguntarme eso, considero que cada
clase es (o debería ser) responsable de la memoria que
gasta (tanto dinamica como estatica) y TAMBIÉN debe ser
responsable de los errores que puede generar, es por eso
que decidí anidar las excepciones de clase dentro de la clase.

Hola :
Prueba esto :

Class PersonalizedException : Inherits Exception
Public Sub New()
MyBase.New("Mi mensaje 1 personalizado")
End Sub
Public Sub New(ByVal sMensaje As String)
MyBase.New(sMensaje)
End Sub
End Class

Con esto puedes hacer cosas como esto para interceptar y


mostrar el error :
Try
'codigo
Cathc pe As PersonalizeException
MessageBox(pe.Message()) 'Saldria en pantalla :


Mensaje 1
personalizado End Try

O también lanzar la excepcion con un mensaje personalizado


(que no el de
defecto del ejemplo anterior):

Throw new PersonalizeException("Mensaje 2 personalizado")

Donde la propiedad Message valdría ahora "Mensaje 2


personalizado".

Supongo es lo que estabas preguntando.

No obstante, considero que sería mejor no anidar la


excepción en la clase,
pues podrías tener dificultades a la hora de tratar el


error en cualquier
otra parte de tu proyecto.

Un saludo.
Fco. Javier Bedoya
Web : http://javierbedoya.iespana.es
Para responder mis mensajes en las UseNet, quite ANTI SPAM
de la dirección de correo.
escribió en el mensaje
news:411101c49f5d$c35db610$
Cuadruple comillas!! quien lo diria!!
Gracias.

Parece que me expliqué mal en mi segunda pregunta, lo que
tengo es:

Class MyClass

Class PersonalizedException : Inherits Exception
Public Sub New()
'Esto no se puede hacer, Message es de
'solo lectura:
Me.Message = "Excepcion personalizada"
End Sub
End Class

'código
'más código
'mucho código

End Class

Cuando hago excepciones personalizadas no me deja
personalizar el Message, ¿hay alguna manera de hacerlo?


1) como se escribe el caracter comilla (") en VB.NET? ya os




adelanto que """c no es ;)

En realidad tendrias que indicar cuatro comillas dobles,


""""c.

2) cuando creo excepciones para mis clases, creo








(dentro de
la clase) una clase que hereda de Exception pero cuando

Throw New NullReferenceException("Deberias crear la


instancia")


Saludos
Pedro Luna, MVP
Gye, Ecu



"44r0x0r44" escribió en el


mensaje
news:287701c49e9a$bec96b80$
1) como se escribe el caracter comilla (") en VB.NET? ya os
adelanto que """c no es ;)

2) cuando creo excepciones para mis clases, creo (dentro de
la clase) una clase que hereda de Exception pero cuando
quiero establecer el "Message" de mi excepcion
personalizada me indica el depurador que "Message" es una
propiedad de solo lectura, ¿como puedo personalizar el
"Message" de mis excepciones?... de momento estoy
sobreescribiendo ToSTring()

Gracias por adelantado a los miembros del grupo.


.





.

Respuesta Responder a este mensaje
#8 44r0x0r44
25/09/2004 - 11:51 | Informe spam
Tienes razón, si la excepción está incluida en la clase, es
la propia clase la que DEBE GESTIONAR y gestiona tal
excepción en lugar de delegarlo a entidades superiores; de
hecho, esa es mi idea lo que pasa es que no lo especifiqué
anteriormente.

Una vez más, grácias por la atención prestada.


Hola :
Tu planteamiento me parece correcto, el problema es que yo


para estas cosas
soy muy "especialito".
Por ejemplo: Si anidas excepciones, entiendo que la


excepción es lanzada y
tratada únicamente por la clase que la contiene, por


tanto, veo un poco
innecesario la definición de la excepción.
Si la excepción es publica, pero está contenida en una


clase, deberás
definir métodos que la expongan al resto de las clases del


proyecto (si es
necesario), aumentando así la complejidad (o cuando menos


la legibilidad del
código)
En el caso de que la excepción sea privada, solo podrá ser


tratada por la
clase que la contiene, impidiendo que las clases


superiores puedan tratar
convenientemente la excepción. (Podrían interceptarla con


un try/catch
Exception, pero esto generaliza, y tal vez, la excepción


anidada en
particular, tenga un tratamiento especifico)
Luego, está el mantenimiento de las excepciones, yo soy


una persona muy dada
a ir haciendo "retoques" a medida que voy avanzando el


proyecto, y la última
modificación que le hice a mi proyecto actual, es la de


escribir los errores
automáticamente en el disco (antes lo hacia en el


contenedor de sucesos), y
el código para hacer esto, lo tengo en la misma clase,


como la excepción es
compartida por varias clases (se entiende, que constituye


un archivo por si
misma) el cambio me resultó más fácil.

Pero, esto no significa que tu planteamiento sea


incorrecto, ni son motivos
inalienables para cambiar tu política de desarrollo.

Un saludo.


Fco. Javier Bedoya
Web : http://javierbedoya.iespana.es
Para responder mis mensajes en las UseNet, quite ANTI SPAM
de la dirección de correo.
"44r0x0r44" escribió en el


mensaje
news:22fd01c4a167$dd97e800$
Muchisimas gracias, es la primera vez que recibo una
respuesta tan, clara, concisa y amable (salvo por las pocas
que me ha dedicado DJMIAO)

Lo he provado y funciona, pero hay algo que comentas que me
ha llamado la atención:

No obstante, considero que sería
mejor no anidar la excepción
en la clase, pues podrías tener
dificultades a la hora de tratar
el error en cualquier
otra parte de tu proyecto.



Te explico mi planteamiento; cuando pienso en crear una
nueva clase las preguntas que me hago son: ¿Cual será la
mision de esta clase?, en base de esa mision ¿Que métodos
debe tener?, además de preguntarme eso, considero que cada
clase es (o debería ser) responsable de la memoria que
gasta (tanto dinamica como estatica) y TAMBIÉN debe ser
responsable de los errores que puede generar, es por eso
que decidí anidar las excepciones de clase dentro de la clase.

Hola :
Prueba esto :

Class PersonalizedException : Inherits Exception
Public Sub New()
MyBase.New("Mi mensaje 1 personalizado")
End Sub
Public Sub New(ByVal sMensaje As String)
MyBase.New(sMensaje)
End Sub
End Class

Con esto puedes hacer cosas como esto para interceptar y


mostrar el error :
Try
'codigo
Cathc pe As PersonalizeException
MessageBox(pe.Message()) 'Saldria en pantalla :


Mensaje 1
personalizado End Try

O también lanzar la excepcion con un mensaje personalizado


(que no el de
defecto del ejemplo anterior):

Throw new PersonalizeException("Mensaje 2 personalizado")

Donde la propiedad Message valdría ahora "Mensaje 2


personalizado".

Supongo es lo que estabas preguntando.

No obstante, considero que sería mejor no anidar la


excepción en la clase,
pues podrías tener dificultades a la hora de tratar el


error en cualquier
otra parte de tu proyecto.

Un saludo.
Fco. Javier Bedoya
Web : http://javierbedoya.iespana.es
Para responder mis mensajes en las UseNet, quite ANTI SPAM
de la dirección de correo.
escribió en el mensaje
news:411101c49f5d$c35db610$
Cuadruple comillas!! quien lo diria!!
Gracias.

Parece que me expliqué mal en mi segunda pregunta, lo que
tengo es:

Class MyClass

Class PersonalizedException : Inherits Exception
Public Sub New()
'Esto no se puede hacer, Message es de
'solo lectura:
Me.Message = "Excepcion personalizada"
End Sub
End Class

'código
'más código
'mucho código

End Class

Cuando hago excepciones personalizadas no me deja
personalizar el Message, ¿hay alguna manera de hacerlo?


1) como se escribe el caracter comilla (") en VB.NET?










ya os
adelanto que """c no es ;)

En realidad tendrias que indicar cuatro comillas dobles,


""""c.

2) cuando creo excepciones para mis clases, creo








(dentro de
la clase) una clase que hereda de Exception pero cuando

Throw New NullReferenceException("Deberias crear la


instancia")


Saludos
Pedro Luna, MVP
Gye, Ecu



"44r0x0r44" escribió en el


mensaje
news:287701c49e9a$bec96b80$
1) como se escribe el caracter comilla (") en VB.NET? ya os
adelanto que """c no es ;)

2) cuando creo excepciones para mis clases, creo (dentro de
la clase) una clase que hereda de Exception pero cuando
quiero establecer el "Message" de mi excepcion
personalizada me indica el depurador que "Message" es una
propiedad de solo lectura, ¿como puedo personalizar el
"Message" de mis excepciones?... de momento estoy
sobreescribiendo ToSTring()

Gracias por adelantado a los miembros del grupo.


.





.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida