http://en.wikipedia.org/wiki/Null_Object_pattern
It needs static analysis tools such as Code Contracts (C#) or SpringContracts (Java) to make it really robust.