summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Ware <zachary.ware@gmail.com>2014-05-06 14:07:13 (GMT)
committerZachary Ware <zachary.ware@gmail.com>2014-05-06 14:07:13 (GMT)
commit8edd532026c10816e055b14d5999b6d93540fc6e (patch)
treeea703e95304a4711ded390825a1ce9751441c402
parent5280d2e399faeeb70d9738b83d406dc1cb361663 (diff)
downloadcpython-8edd532026c10816e055b14d5999b6d93540fc6e.zip
cpython-8edd532026c10816e055b14d5999b6d93540fc6e.tar.gz
cpython-8edd532026c10816e055b14d5999b6d93540fc6e.tar.bz2
Issue #21366: Document the fact that ``return`` in a ``finally`` clause
overrides a ``return`` in the ``try`` suite.
-rw-r--r--Doc/reference/compound_stmts.rst14
1 files changed, 14 insertions, 0 deletions
diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 4e03711..869eef4 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -337,6 +337,20 @@ statement, the :keyword:`finally` clause is also executed 'on the way out.' A
reason is a problem with the current implementation --- this restriction may be
lifted in the future).
+The return value of a function is determined by the last :keyword:`return`
+statement executed. Since the :keyword:`finally` clause always executes, a
+:keyword:`return` statement executed in the :keyword:`finally` clause will
+always be the last one executed::
+
+ >>> def foo():
+ ... try:
+ ... return 'try'
+ ... finally:
+ ... return 'finally'
+ ...
+ >>> foo()
+ 'finally'
+
Additional information on exceptions can be found in section :ref:`exceptions`,
and information on using the :keyword:`raise` statement to generate exceptions
may be found in section :ref:`raise`.