summaryrefslogtreecommitdiffstats
path: root/Doc/tutorial/errors.rst
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-08-08 06:50:56 (GMT)
committerGeorg Brandl <georg@python.org>2008-08-08 06:50:56 (GMT)
commitf5f2630db64c64faa9cc45cd2f19982ae6648565 (patch)
treeefb34acdc011a8199533a23cf61682ac4e8d1554 /Doc/tutorial/errors.rst
parent1e3830a1786fa7183d47145ec57fe1f42590601f (diff)
downloadcpython-f5f2630db64c64faa9cc45cd2f19982ae6648565.zip
cpython-f5f2630db64c64faa9cc45cd2f19982ae6648565.tar.gz
cpython-f5f2630db64c64faa9cc45cd2f19982ae6648565.tar.bz2
#3525: 3.0 exception changes in tutorial.
Diffstat (limited to 'Doc/tutorial/errors.rst')
-rw-r--r--Doc/tutorial/errors.rst34
1 files changed, 15 insertions, 19 deletions
diff --git a/Doc/tutorial/errors.rst b/Doc/tutorial/errors.rst
index dd2e06e..c8b7f4c 100644
--- a/Doc/tutorial/errors.rst
+++ b/Doc/tutorial/errors.rst
@@ -1,4 +1,4 @@
-. _tut-errors:
+.. _tut-errors:
*********************
Errors and Exceptions
@@ -131,8 +131,8 @@ the exception (allowing a caller to handle the exception as well)::
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 @@ When an exception occurs, it may have an associated value, also known as the
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 @@ desired. ::
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 @@ indirectly) in the try clause. For example::
...
>>> 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: