[Tutor] Error handling
Mark Lawrence
breamoreboy at yahoo.co.uk
Sun Mar 25 18:00:42 CEST 2012
On 25/03/2012 08:22, Russel Winder wrote:
> Michael,
>
> On Sat, 2012-03-24 at 15:20 -0700, Michael Lewis wrote:
> [...]
>
> It is perhaps worth noting that in Python 3, the syntax has changed:
>
>> import os, errno
>> try:
>>
>> os.makedirs('a/b/c')
>> except OSError, e:
>
> except OSError as e :
>
>>
>> if e.errno != errno.EEXIST:
>>
>> raise
>
> This "as" syntax works in 2.6 and 2.7 so is probably the syntax to use
> unless you have to use very old versions of Python. I think the "as"
> syntax makes it clearer that e is a variable referring to the instance
> of OSError that causes the except clause to execute if it does.
>
>
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
It's worth noting that PEP 3151 has been implemented in Python 3.3 see
http://docs.python.org/dev/whatsnew/3.3.html#pep-3151-reworking-the-os-and-io-exception-hierarchy
Quoting from the above link.
"Thanks to the new exceptions, common usages of the errno can now be
avoided. For example, the following code written for Python 3.2:
from errno import ENOENT, EACCES, EPERM
try:
with open("document.txt") as f:
content = f.read()
except IOError as err:
if err.errno == ENOENT:
print("document.txt file is missing")
elif err.errno in (EACCES, EPERM):
print("You are not allowed to read document.txt")
else:
raise
can now be written without the errno import and without manual
inspection of exception attributes:
try:
with open("document.txt") as f:
content = f.read()
except FileNotFoundError:
print("document.txt file is missing")
except PermissionError:
print("You are not allowed to read document.txt")
"
--
Cheers.
Mark Lawrence.
More information about the Tutor
mailing list