New exception catching syntax.

This commit is contained in:
Georg Brandl 2007-09-06 14:03:41 +00:00
parent 105f60ee62
commit 0068e2ccb1
1 changed files with 8 additions and 9 deletions

View File

@ -219,13 +219,13 @@ for a group of statements:
.. productionlist:: .. productionlist::
try_stmt: try1_stmt | try2_stmt try_stmt: try1_stmt | try2_stmt
try1_stmt: "try" ":" `suite` try1_stmt: "try" ":" `suite`
: ("except" [`expression` ["," `target`]] ":" `suite`)+ : ("except" [`expression` ["as" `target`]] ":" `suite`)+
: ["else" ":" `suite`] : ["else" ":" `suite`]
: ["finally" ":" `suite`] : ["finally" ":" `suite`]
try2_stmt: "try" ":" `suite` try2_stmt: "try" ":" `suite`
: "finally" ":" `suite` : "finally" ":" `suite`
The :keyword:`except` clause(s) specify one or more exception handlers. When no The :keyword:`except` clause(s) specify one or more exception handlers. When no
exception occurs in the :keyword:`try` clause, no exception handler is executed. exception occurs in the :keyword:`try` clause, no exception handler is executed.
When an exception occurs in the :keyword:`try` suite, a search for an exception When an exception occurs in the :keyword:`try` suite, a search for an exception
handler is started. This search inspects the except clauses in turn until one handler is started. This search inspects the except clauses in turn until one
@ -245,12 +245,12 @@ the new exception in the surrounding code and on the call stack (it is treated
as if the entire :keyword:`try` statement raised the exception). as if the entire :keyword:`try` statement raised the exception).
When a matching except clause is found, the exception is assigned to the target When a matching except clause is found, the exception is assigned to the target
specified in that except clause, if present, and the except clause's suite is specified after the ``as`` keyword in that except clause, if present, and the
executed. All except clauses must have an executable block. When the end of except clause's suite is executed. All except clauses must have an executable
this block is reached, execution continues normally after the entire try block. When the end of this block is reached, execution continues normally
statement. (This means that if two nested handlers exist for the same after the entire try statement. (This means that if two nested handlers exist
exception, and the exception occurs in the try clause of the inner handler, the for the same exception, and the exception occurs in the try clause of the inner
outer handler will not handle the exception.) handler, the outer handler will not handle the exception.)
.. index:: .. index::
module: sys module: sys
@ -545,4 +545,3 @@ instance variables with different implementation details.
.. [#] Currently, control "flows off the end" except in the case of an exception or the .. [#] Currently, control "flows off the end" except in the case of an exception or the
execution of a :keyword:`return`, :keyword:`continue`, or :keyword:`break` execution of a :keyword:`return`, :keyword:`continue`, or :keyword:`break`
statement. statement.