Jens wrote:
On Dec 13, 2004, at 17:15, Florent Guillaume wrote:
Can we have instead:
def getUserById(self, id, default=_marker): """Return the user corresponding to the given id.
Raises a KeyError if the user does not exist and no default is provided. """ user = self.getUser(id) if user is not None: return user if default is not _marker: return default raise KeyError(id)
What is the advantage of throwing a KeyError over simply returning None?
Well it's standard usage all over Zope for all methods that accept an optional default to raise an error if no default is provided. Why accept a default when None is returned anyway if no default is provided, and None is not an acceptable user in itself ? That just doesn't make sense.
I don't see the reason for "getUser" and "getUserById" behaving in different ways here. They should both behave similar.
Chris clarified that getUser is really getUserByName so I'm ok with that. If the method should be never raise and return None if nothing's provided, then let's use simply: def getUserById(self, id, default=None): user = self.getUser(id) if user is not None: return user return default or even: def getUserById(self, id, default=None): return self.getUser(id) or default Florent -- Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D +33 1 40 33 71 59 http://nuxeo.com fg@nuxeo.com