What is the difference between 'except IOError as e:' and 'except IOError, e:'

MRAB python at mrabarnett.plus.com
Tue Nov 17 21:52:44 EST 2009


Peng Yu wrote:
> I don't see any different between the following code in terms of
> output. Are they exactly the same ('as' v.s. ',')?
> 
> try:
>   raise IOError('IOError')
> except IOError as e:
>   print e
> 
> try:
>   raise IOError('IOError')
> except IOError, e:
>   print e

The second form is the old form. Later versions of Python introduced the
first form because it is less confusing.

If you wanted a single 'except' to catch 2 exceptions you would need to
write:

try:
     ...
except (IOError, OSError):
     ...

Sometimes people who are new to Python mistakenly write:

try:
     ...
except IOError, OSError:
     ...

thinking that that form will catch 2 exceptions, and they'll then be
puzzled when it doesn't work properly.



More information about the Python-list mailing list