[Python-ideas] "or raise" syntax
Terry Reedy
tjreedy at udel.edu
Thu Oct 30 19:45:07 CET 2014
On 10/30/2014 11:13 AM, Ethan Furman wrote:
> On 10/30/2014 08:03 AM, Javier Dehesa wrote:
>>
>> This happens to me with some frequency:
>>
>> result = f(args)
>> if not result: # of "if result is None:"
>> raise Exception(...)
>>
>> What if I could just say?
>>
>> result = f(args) or raise Exception(...)
>
> Seems like a decent idea, but you can already have most of that:
>
> result = f(args) or raise_exc(ValueError, 'args must be ...')
>
> and then have 'raise_exc' do the exception raising work.
No need to pass exception class and message separately instead of an
exception instance.
def raiser(exc):
raise exc
print(1 or raiser(ValueError('null value')))
print(0 or raiser(ValueError('null value')))
>>>
1
Traceback (most recent call last):
File "c:\programs\python34\tem.py", line 5, in <module>
print(0 or raiser(ValueError('null value')))
File "c:\programs\python34\tem.py", line 2, in raiser
raise exc
ValueError: null value
It does add another line to the trackback, but this is pretty minor.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list