[Zope-dev] brain.getObject and traversal
Chris Withers
chris at simplistix.co.uk
Wed Mar 30 08:49:32 EST 2005
Florent Guillaume wrote:
> 2. is necessary for backward compatibility. *all* the previous
> implementations of getObject returned None in case of problems.
This is the only bit I'm asking about, I accept that I'm in the insane
minority on the other point ;-)
Just because that's what it did before doesn't mean we should leave it
like that. I can see absolutely no benefit in returning None over
raising a specific error.
Also, the original behaviour of getObject, prior to Casey's drastic and
unexpected switch to restrictedTraverse(path,None) was to raise
Unauthorized, NOT to return None.
I first became aware of Casey's changes when I upgraded a production
Zope instance and started getting loads of random attribute errors where
I'd happilly been dealing with the Unauthorized's before.
So, for me, returning None is just plain evil. All it serves to do is
mask an exception that's likely to be useful. If people are relying on
it returning None, then it's a one line change in their code.
Now, the other problem I have with this fix is no tests were checked in
for this. We should have tests that verify this behaves as it should,
since those tests are likely to be the only formal documentation this
issue ever receives ;-)
Would anyone object if I wrote tests and changed the implementation to
raise exceptions, including Unauthorized, instead of returning None?
cheers,
Chris
--
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope-Dev
mailing list