This is a dreadful idea. I can say that freely because it was mine. Not only does it return objects that magically dereference in all sorts of clever ways, but it may return objects that are *false*!
Throwing an exception on failure is a much easier to manage practice, and will surprise and confuse fewer programmers. Returning objects or throwing exceptions that have useful methods for inspection is better than using these generic "any kind of data attached" objects.