Return null when value not found

Throwing an exception is for exceptional cases.  Not finding the target data doesn't feel like an exceptional case, particularly if I'm going to use the pointer as a filter to select from a set of objects that might match.