summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorAndrew Svetlov <andrew.svetlov@gmail.com>2012-08-14 12:38:58 (GMT)
committerAndrew Svetlov <andrew.svetlov@gmail.com>2012-08-14 12:38:58 (GMT)
commitf06afe35b9eca02cc99e77c19512841f2d889aef (patch)
treecd8afdb8b82fe29d6904cd0344701f1549a07ace /Doc
parent3165a75e45817e858b77ce307cebb93657249dc2 (diff)
parentf158d86074465914c8de22e357c17090eb959da4 (diff)
downloadcpython-f06afe35b9eca02cc99e77c19512841f2d889aef.zip
cpython-f06afe35b9eca02cc99e77c19512841f2d889aef.tar.gz
cpython-f06afe35b9eca02cc99e77c19512841f2d889aef.tar.bz2
Issue #14167: Document return statement in finally blocks.
Patch by Yury Selivanov.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/reference/compound_stmts.rst23
1 files changed, 17 insertions, 6 deletions
diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 4ce7324..687ba3e 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -307,12 +307,23 @@ If :keyword:`finally` is present, it specifies a 'cleanup' handler. The
:keyword:`try` clause is executed, including any :keyword:`except` and
:keyword:`else` clauses. If an exception occurs in any of the clauses and is
not handled, the exception is temporarily saved. The :keyword:`finally` clause
-is executed. If there is a saved exception, it is re-raised at the end of the
-:keyword:`finally` clause. If the :keyword:`finally` clause raises another
-exception or executes a :keyword:`return` or :keyword:`break` statement, the
-saved exception is set as the context of the new exception. The exception
-information is not available to the program during execution of the
-:keyword:`finally` clause.
+is executed. If there is a saved exception or :keyword:`break` statement,
+it is re-raised at the end of the :keyword:`finally` clause. If the
+:keyword:`finally` clause raises another exception the saved exception
+is set as the context of the new exception; if the :keyword:`finally` clause
+executes a :keyword:`return` statement, the saved exception is discarded::
+
+ def f():
+ try:
+ 1/0
+ finally:
+ return 42
+
+ >>> f()
+ 42
+
+The exception information is not available to the program during execution of
+the :keyword:`finally` clause.
.. index::
statement: return