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

Reply via email to