You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Doc/tutorial/errors.rst
+22-9Lines changed: 22 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -341,15 +341,28 @@ example::
341
341
File "<stdin>", line 2, in <module>
342
342
KeyboardInterrupt
343
343
344
-
A *finally clause* is always executed before leaving the :keyword:`try`
345
-
statement, whether an exception has occurred or not. When an exception has
346
-
occurred in the :keyword:`!try` clause and has not been handled by an
347
-
:keyword:`except` clause (or it has occurred in an :keyword:`!except` or
348
-
:keyword:`!else` clause), it is re-raised after the :keyword:`finally` clause has
349
-
been executed. The :keyword:`!finally` clause is also executed "on the way out"
350
-
when any other clause of the :keyword:`!try` statement is left via a
351
-
:keyword:`break`, :keyword:`continue` or :keyword:`return` statement. A more
352
-
complicated example::
344
+
If a :keyword:`finally` clause is present, the :keyword:`finally` clause will execute as the last task before the :keyword:`try` statement completes. The :keyword:`finally` clause runs whether or not the :keyword:`try` statement produces an exception. The following points discuss more complex cases when an exception occurs:
345
+
346
+
* If an exception occurs during execution of the :keyword:`!try` clause, the exception may be handled by an :keyword:`except` clause. In all cases, the exception is re-raised after the :keyword:`!finally` clause has been executed.
347
+
348
+
* An exception could occur during execution of an :keyword:`!except` or :keyword:`!else` clause. Again, the exception is re-raised after the :keyword:`!finally` clause has been executed.
349
+
350
+
* If the :keyword:`!try` statement reaches a :keyword:`break`, :keyword:`continue` or :keyword:`return` statement, the :keyword:`finally` clause will execute just prior to the :keyword:`break`, :keyword:`continue` or :keyword:`return` statement's execution.
351
+
352
+
* If a :keyword:`finally` clause includes a :keyword:`return` statement, the :keyword:`finally` clause's :keyword:`return` statement will execute before, and instead of, the :keyword:`return` statement in a :keyword:`try` clause.
0 commit comments