[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