Commit f158d860 authored by Andrew Svetlov's avatar Andrew Svetlov

Issue #14167: Document return statement in finally blocks.

Patch by Yury Selivanov.
parent e88a2445
...@@ -307,12 +307,23 @@ If :keyword:`finally` is present, it specifies a 'cleanup' handler. The ...@@ -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:`try` clause is executed, including any :keyword:`except` and
:keyword:`else` clauses. If an exception occurs in any of the clauses and is :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 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 is executed. If there is a saved exception or :keyword:`break` statement,
:keyword:`finally` clause. If the :keyword:`finally` clause raises another it is re-raised at the end of the :keyword:`finally` clause. If the
exception or executes a :keyword:`return` or :keyword:`break` statement, the :keyword:`finally` clause raises another exception the saved exception
saved exception is set as the context of the new exception. The exception is set as the context of the new exception; if the :keyword:`finally` clause
information is not available to the program during execution of the executes a :keyword:`return` statement, the saved exception is discarded::
:keyword:`finally` clause.
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:: .. index::
statement: return statement: return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment