[Python-3000-checkins] r65594 - in python/branches/py3k/Doc/tutorial: classes.rst errors.rst

georg.brandl python-3000-checkins at python.org
Fri Aug 8 08:50:57 CEST 2008


Author: georg.brandl
Date: Fri Aug  8 08:50:56 2008
New Revision: 65594

Log:
#3525: 3.0 exception changes in tutorial.


Modified:
   python/branches/py3k/Doc/tutorial/classes.rst
   python/branches/py3k/Doc/tutorial/errors.rst

Modified: python/branches/py3k/Doc/tutorial/classes.rst
==============================================================================
--- python/branches/py3k/Doc/tutorial/classes.rst	(original)
+++ python/branches/py3k/Doc/tutorial/classes.rst	Fri Aug  8 08:50:56 2008
@@ -671,7 +671,7 @@
 listing a derived class is not compatible with a base class).  For example, the
 following code will print B, C, D in that order::
 
-   class B:
+   class B(Exception):
        pass
    class C(B):
        pass

Modified: python/branches/py3k/Doc/tutorial/errors.rst
==============================================================================
--- python/branches/py3k/Doc/tutorial/errors.rst	(original)
+++ python/branches/py3k/Doc/tutorial/errors.rst	Fri Aug  8 08:50:56 2008
@@ -1,4 +1,4 @@
-. _tut-errors:
+.. _tut-errors:
 
 *********************
 Errors and Exceptions
@@ -131,8 +131,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 err:
+       print("I/O error: {0}".format(err))
    except ValueError:
        print("Could not convert data to an integer.")
    except:
@@ -162,25 +162,21 @@
 exception's *argument*. The presence and type of the argument depend on the
 exception type.
 
-The except clause may specify a variable after the exception name (or tuple).
-The variable is bound to an exception instance with the arguments stored in
+The except clause may specify a variable after the exception name.  The
+variable is bound to an exception instance with the arguments stored in
 ``instance.args``.  For convenience, the exception instance defines
-:meth:`__getitem__` and :meth:`__str__` so the arguments can be accessed or
-printed directly without having to reference ``.args``.
-
-But use of ``.args`` is discouraged.  Instead, the preferred use is to pass a
-single argument to an exception (which can be a tuple if multiple arguments are
-needed) and have it bound to the ``message`` attribute.  One may also
-instantiate an exception first before raising it and add any attributes to it as
-desired. ::
+:meth:`__str__` so the arguments can be printed directly without having to
+reference ``.args``.  One may also instantiate an exception first before
+raising it and add any attributes to it as desired. ::
 
    >>> try:
    ...    raise Exception('spam', 'eggs')
    ... except Exception as inst:
    ...    print(type(inst))    # the exception instance
    ...    print(inst.args)     # arguments stored in .args
-   ...    print(inst)          # __str__ allows args to be printed directly
-   ...    x, y = inst          # __getitem__ allows args to be unpacked directly
+   ...    print(inst)          # __str__ allows args to be printed directly,
+   ...                         # but may be overridden in exception subclasses
+   ...    x, y = inst.args     # unpack args
    ...    print('x =', x)
    ...    print('y =', y)
    ...
@@ -190,7 +186,7 @@
    x = spam
    y = eggs
 
-If an exception has an argument, it is printed as the last part ('detail') of
+If an exception has arguments, they are printed as the last part ('detail') of
 the message for unhandled exceptions.
 
 Exception handlers don't just handle exceptions if they occur immediately in the
@@ -202,10 +198,10 @@
    ... 
    >>> try:
    ...     this_fails()
-   ... except ZeroDivisionError as detail:
-   ...     print('Handling run-time error:', detail)
+   ... except ZeroDivisionError as err:
+   ...     print('Handling run-time error:', err)
    ... 
-   Handling run-time error: integer division or modulo by zero
+   Handling run-time error: int division or modulo by zero
 
 
 .. _tut-raising:


More information about the Python-3000-checkins mailing list