git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Except with empty tuple


On 10/16/2019 1:18 PM, MRAB wrote:
> On 2019-10-16 15:03, Antoon Pardon wrote:
>> I would like to verify I understand correctly.
>>
>> It is about the following construct:
>>
>> ???? try:
>> ???????? statement1
>> ???????? statement2
>> ???????? ...
>> ???? except ():
>> ???????? pass
>>
>> As far as I understand and my tests seem to confirm this, this
>> is equivallent to just
>>
>> ???? statement1
>> ???? statement2
>> ???? ...
>>
>> Am I correct or did I miss something?

Since except (): cannot catch anything, the two are externally 
equivalent given a particular behavior of the statements.  Internally, 
the first takes a bit longer unless the irrelevant try-except is 
optimized away, but checking for this case would be a waste of time.

> What if there's an exception?

Antoon is asking whether the two snippets are equivalent for any 
particular behavior of the sequence of statements.

>  >>> def test_1():
> ...???? try:
> ...???????? print('statement1')
> ...???????? raise ValueError()
> ...???????? print('statement2')
> ...???? except ():
> ...???????? pass
> ...???? print('statement3')
> ...
>  >>> def test_2():
> ...???? print('statement1')

If you add raise ValueError() to test with the same snippet behavior

> ...???? print('statement2')
> ...???? print('statement3')
> ...
>  >>> test_1()
> statement1
> Traceback (most recent call last):
>  ? File "<stdin>", line 1, in <module>
>  ? File "<stdin>", line 4, in test_1
> ValueError

The point is that except (): cannot not catch any exception.

>  >>> test_2()

Then you get the same output.

-- 
Terry Jan Reedy