Es posible?? Tema Exepciones

18/01/2006 - 17:02 por Ivan Pascual | Informe spam
A ver si me se explicar...
es posible que un Constructor de una clase que es Shared, le llege una
excepcion y este constructor no realice el throw que tiene.

Al llegar a este punto muestra un mensaje no controlado en lugar de seguir
subiendo la excepcion.

En otros constructores, que no son shared, si que realizan el Throw de la
excepcion, pero al llegar al catch del constructor shared no nos sube nada,
lo muestra por pantalla.

Espero que se me haya entendido algo, gracias a todos.
Hasta pronto

Ivan Pascual

Preguntas similare

Leer las respuestas

#1 Jesús López
18/01/2006 - 17:22 | Informe spam
Un ejemplo de código no vendría mal.
Respuesta Responder a este mensaje
#2 A.Poblacion
18/01/2006 - 18:53 | Informe spam
"Ivan Pascual" wrote in message
news:
es posible que un Constructor de una clase que es Shared, le llege una
excepcion y este constructor no realice el throw que tiene.

Al llegar a este punto muestra un mensaje no controlado en lugar de seguir
subiendo la excepcion.



Si te estás refiriendo a un constructor de tipo Shared, también llamado
"constructor de clase" (de los que se compilan para dar un cctor en MSIL),
ten en cuenta que este constructor solo se ejecuta una única vez y que lo
ejecuta el sistema sin que tú sepas cuando lo va a ejecutar (siempre antes
de que tu código tenga oportunidad de hacer uso de la clase). En
consecuencia, si hace un throw, la excepción no tiene a donde "subir" como
tú dices, ya que no ha intervenido ningún código tuyo al que pueda subir.
Por tanto sube al código de inicialización que el framework está ejecutando
internamente, y este código no sabe responder de ninguna manera más que
lanzando un mensaje no controlado.
Respuesta Responder a este mensaje
#3 jlmoga
18/01/2006 - 19:55 | Informe spam
A.Poblacion ha escrito:
ten en cuenta que este constructor solo se ejecuta una única vez y que lo
ejecuta el sistema sin que tú sepas cuando lo va a ejecutar (siempre antes
de que tu código tenga oportunidad de hacer uso de la clase).



La ejecución de un constructor estático la desencadena el primero de
los siguientes eventos que se produzcan en un dominio de aplicación.

Se crea una instancia de la clase.
Se hace referencia a cualquiera de los miembros estáticos de la clase.


Saludos,
Jose Luis
Respuesta Responder a este mensaje
#4 jlmoga
18/01/2006 - 20:05 | Informe spam
Cuando se produce una excepción, el sistema busca la cláusula catch
más próxima que controla la excepción, según lo determina el tipo
de la excepción en tiempo de ejecución. En primer lugar, se busca una
instrucción try contenedora en el método actual, y se consideran las
cláusulas catch asociadas de la instrucción try según su
ordenación. Si ese primer paso falla, se busca el método que llamó
al método actual en una instrucción try que contenga el punto de la
llamada al método actual. Esta búsqueda continúa hasta encontrar una
cláusula catch que puede controlar la excepción actual, denominando
una clase de excepción que sea de la misma clase o clase base del tipo
en tiempo de ejecución de la excepción iniciada. Una cláusula catch
que no denomina ninguna clase de excepción puede controlar cualquier
excepción.

Una vez hallada una cláusula catch coincidente, el sistema se prepara
para transferir el control a la primera instrucción de la cláusula
catch. Antes de comenzar la ejecución de la cláusula catch, el
sistema ejecuta, por orden, todas las cláusulas finally asociadas a
instrucciones try cuyo nivel de anidamiento sea mayor que el de la que
capturó la excepción.

De no encontrarse ninguna cláusula catch coincidente, se produce una
de estas dos circunstancias:

Si la búsqueda de una cláusula catch coincidente llega hasta un
constructor estático (Sección 10.11) o un inicializador de campo
estático, se inicia una excepción System.TypeInitializationException
en el punto donde se desencadenó la llamada al constructor estático.
La excepción interna de System.TypeInitializationException contiene la
excepción iniciada en un principio.
Si la búsqueda de cláusulas catch coincidentes llega hasta el código
que inició el subproceso, termina la ejecución del mismo. El impacto
de esta terminación se define según la implementación.
Respuesta Responder a este mensaje
#5 Ivan Pascual
19/01/2006 - 10:13 | Informe spam
Saludos A.Población,
Referente a tu respuesta:

Si te estás refiriendo a un constructor de tipo Shared, también llamado
"constructor de clase" (de los que se compilan para dar un cctor en MSIL),
ten en cuenta que este constructor solo se ejecuta una única vez y que lo
ejecuta el sistema sin que tú sepas cuando lo va a ejecutar (siempre antes
de que tu código tenga oportunidad de hacer uso de la clase).



quiero comentarte un par de cosas.
Un constructor de tipo Shared NO es tambien llamado "constructor de clase".
Toda clase tiene su constructor, la codifique el programador o no sea
codificada, pero toda clase tiene su propio constructor de clase.

Ese constructor puede ser Shaerd o no.
Por tanto la definición de "constructor de clase" no tiene por que ser del
tipo Shared.

Los constructores de clase del tipo Shared son constructores que se
construyen una única vez. Los demas constructores de clase se construyen
cada vez que se hace un New a esa clase.

También dices que los constructores Shared lo ejecuta el sistema sin que tu
sepas cuando lo va a ejecutar, eso no es cierto.
El constructor de tipo shared se ejecuta cuando hacer referencia a esa
clase, por tanto si que sabes cuando se va a ejecutar ese codigo, lo unico
que sólo se ejecuta la primera vez que se construye dicha clase.

Lo que yo entiendo de tu frase es que el codigo prevee que en un momento del
ejecución se va a llamar a un constructor de clase shared y el sistema ya
decidirá cuando ejecutar dicho constructor, eso no es asi.

Unicamente quería aclara estos términos para no dar malos entendidos,
gracias de todos modos por tu respuesta.
Saludos

Ivan Pascual
"A.Poblacion" escribió en
el mensaje news:%
"Ivan Pascual" wrote in message
news:
es posible que un Constructor de una clase que es Shared, le llege una
excepcion y este constructor no realice el throw que tiene.

Al llegar a este punto muestra un mensaje no controlado en lugar de
seguir subiendo la excepcion.



Si te estás refiriendo a un constructor de tipo Shared, también llamado
"constructor de clase" (de los que se compilan para dar un cctor en MSIL),
ten en cuenta que este constructor solo se ejecuta una única vez y que lo
ejecuta el sistema sin que tú sepas cuando lo va a ejecutar (siempre antes
de que tu código tenga oportunidad de hacer uso de la clase). En
consecuencia, si hace un throw, la excepción no tiene a donde "subir" como
tú dices, ya que no ha intervenido ningún código tuyo al que pueda subir.
Por tanto sube al código de inicialización que el framework está
ejecutando internamente, y este código no sabe responder de ninguna manera
más que lanzando un mensaje no controlado.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida