On 04/10/2015 04:48 AM, Pavel S wrote:
Hi,
I noticed interesting behaviour. Since I don't have python3 installation here,
I tested that on Python 2.7.
Well known feature is that try..except block can catch multiple exceptions
listed in a tuple:
exceptions = ( TypeError, ValueError )
try:
a, b = None
except exceptions, e:
print 'Catched error:', e
However when exceptions=(), then try..except block behaves as no try..except
block.
exceptions = ()
try:
a, b = None # <--- the error will not be catched
except exceptions, e:
print 'Catched error:', e
I found use case for it, e.g. when I want to have a method with 'exceptions'
argument:
def catch_exceptions(exceptions=()):
try:
do_something()
except exceptions:
do_something_else()
catch_exceptions() # catches nothing
catch_exceptions((TypeError,)) # catches TypeError
I believe that behaviour is not documented. What you think?
It's no more surprising than a for loop over an empty tuple or empty
list. There's nothing to do, so you do nothing.
--
DaveA
--
https://mail.python.org/mailman/listinfo/python-list