2010-02-18 18 views
12

¿Es una mala práctica de programación tener bloques try/catch dentro de los constructores? ¿O no hace ninguna diferencia siempre que nuestros programas manejen las excepciones de tipo de inicializador correctamente?Probar/atrapar bloques dentro de los constructores

En C# si hay alguna excepción dentro de un constructor, la estructura siempre arroja excepciones typeinitilizer.

Gracias, Shamika

Respuesta

19

System.TypeInitializationException se inicia cuando un estática constructor lanza una excepción, no en un constructor de instancias. Las excepciones se lanzan normalmente en constructores de instancias.

Dejando eso aparte, no hay nada "incorrecto" en eso más que en cualquier otro lado; maneja excepciones de las que se puede recuperar correctamente y permite aquellas que no puede crear.

+0

Gracias por la explicación sobre System.TypeInitializationException y sí, en mi caso es un constructor estático de hecho. – Shamika

+0

@Shamika: No obstante, se aplica la misma respuesta; si puedes recuperarte de la excepción, entonces tómalo. Si no puedes, entonces no lo hagas. También tenga en cuenta que las excepciones encontradas en la inicialización de miembros estáticos no se pueden capturar (lanzarán una 'TypeInitializationException'). –

+0

pregunta, ¿es mejor utilizar un try catch que rodee la llamada al constructor o dentro del constructor? –

Cuestiones relacionadas