However, this piece of code comes into trouble if my constructor throws exceptions. It won't compile because you cant throw exceptions in the initializer area. Say the first time it is used I need to make an db call, and I want the user of the singleton to handle the exception so I can't handle it in the constructor. Any ideas?