Hash: SHA1

Thomas Lotze wrote:
> Martijn Faassen wrote:
>> Hey,
>> Tres Seaver wrote:
>> [snip]
>>> Any code today which wants a utility is calling 'getUtilty' (if it
>>> *knows* the utility must be registered) or 'queryUtility' (if it thinks
>>> it might not be).  Less facetiously than my first challenge: please
>>> point to actual code in the wild which looks like::
>>>   try:
>>>       foo = getUtilty(IFoo, name='bar')
>>>   except ComponentLookupError:
>>>       # do something
>>> instead of::
>>>    foo = queryUtility(IFoo, name='bar')
>>>    if foo is None:
>>>        # do something
>>> I will argue that any code doing the first, outside of maybe tests of
>>> the ZCA itself is plain broken.
>> I have code like that in the wild - I have no real reason why I didn't
>> queryUtility, but I didn't think it mattered.
>> Why is it plain broken? Isn't getUtility supported to raise
>> ComponentLookupError if it cannot find the required utility?
> The interface declaration for the zope.component API does assert that
> getUtility raises a CLE if it cannot find the utility. Also, I wouldn't
> say that queryUtility should be used instead of using getUtility and
> catching the CLE, as that would deprive us of all the advantages of using
> exceptions, such as propagation along the call stack.

Those advantages don't obtain if the call site itself catches the CLE:
at that point, all you have is a more expensive and less clear way to
get what 'queryUtility' gives you.

- --
Tres Seaver          +1 540-429-0999          tsea...@palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to