Mercurial > cpython-lru_cache-weakref
diff Doc/tutorial/errors.rst @ 77382:b873afe640e2 2.7
#8652: update errors tutorial.
The tutorial had some outdated examples. The patch also adds a caution
about the meaning of parens in the except statement.
Patch by Marien Zwart.
| author | R David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Thu, 07 Jun 2012 21:46:44 -0400 |
| parents | b36cb4602e21 |
| children | 29627bd5b333 |
line wrap: on
line diff
--- a/Doc/tutorial/errors.rst Thu Jun 07 19:50:30 2012 -0400 +++ b/Doc/tutorial/errors.rst Thu Jun 07 21:46:44 2012 -0400 @@ -120,6 +120,14 @@ ... except (RuntimeError, TypeError, NameError): ... pass +Note that the parentheses around this tuple are required, because +``except ValueError, e:`` was the syntax used for what is normally +written as ``except ValueError as e:`` in modern Python (described +below). The old syntax is still supported for backwards compatibility. +This means ``except RuntimeError, TypeError`` is not equivalent to +``except (RuntimeError, TypeError):`` but to ``except RuntimeError as +TypeError:`` which is not what you want. + The last except clause may omit the exception name(s), to serve as a wildcard. Use this with extreme caution, since it is easy to mask a real programming error in this way! It can also be used to print an error message and then re-raise @@ -131,8 +139,8 @@ f = open('myfile.txt') s = f.readline() i = int(s.strip()) - except IOError as (errno, strerror): - print "I/O error({0}): {1}".format(errno, strerror) + except IOError as e: + print "I/O error({0}): {1}".format(e.errno, e.strerror) except ValueError: print "Could not convert data to an integer." except: @@ -177,7 +185,7 @@ ... print type(inst) # the exception instance ... print inst.args # arguments stored in .args ... print inst # __str__ allows args to printed directly - ... x, y = inst # __getitem__ allows args to be unpacked directly + ... x, y = inst.args ... print 'x =', x ... print 'y =', y ...
