Discussion:
[Python-3000-checkins] r65594 - in python/branches/py3k/Doc/tutorial: classes.rst errors.rst
georg.brandl
2008-08-08 06:50:57 UTC
Permalink
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
... 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 @@
...
... 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:

Loading...