views:

206

answers:

1

Hi,

Is it a bad programming practice to have try/catch blocks inside constructors? Or does it make no difference as long as our programs handle typeinitializer exceptions gracefully.

In C# if there are any exceptions inside a constructor the framework always throws typeinitilizer exceptions.

Thanks, Shamika

+6  A: 

System.TypeInitializationException is thrown when a static constructor throws an exception, not on an instance constructor. Exceptions are thrown normally in instance constructors.

That aside, there's nothing "wrong" with it any more than it is anywhere else; handle exceptions that you can properly recover from, and allow those that you can't to bubble up.

Adam Robinson
Thanks for the explanation on System.TypeInitializationException and yes, in my case it's a static constructor indeed.
Shamika
@Shamika: Nonetheless, the same answer applies; if you can recover from the exception, then catch it. If you can't, then don't. Also note that exceptions encountered in static member initialization can't be caught (they will throw a `TypeInitializationException`).
Adam Robinson