[Python-Dev] PEP 409 and the stdlib
hrvoje.niksic at avl.com
Tue May 21 15:23:44 CEST 2013
On 05/21/2013 02:57 PM, Serhiy Storchaka wrote:
> 21.05.13 13:05, Hrvoje Niksic написав(ла):
>> On 05/21/2013 11:56 AM, Serhiy Storchaka wrote:
>>> x = d['key']
>>> except KeyError:
>>> x = fallback('key')
>>> def fallback(key):
>>> if key not in a:
>>> raise BusinessError(...)
>>> return 1 / a[key] # possible TypeError, ZeroDivisionError, etc
>> Yes, in that case the exception will appear unintentional and you get
>> the old message — it's on a best-effort basis.
> In both cases the BusinessError exception raised explicitly. How do you
> distinguish one case from another?
In my example code the "raise" keyword appears lexically inside the
"except" clause. The compiler would automatically emit a different
raise opcode in that case.
NB in your example the "raise" is just as intentional, but invoked from
a different function, which causes the above criterion to result in a
false negative. Even in so, the behavior would be no worse than now,
you'd just get the old message.
More information about the Python-Dev