Like the 'with' statement, the 'catch' clause of a 'try' statement can
establish local bindings. In both cases, the spec describes this in
terms of changing the execution context's LexicalEnvironment temporarily
and then restoring it.
In the description of 'with', there is a "NOTE" assuring the reader that
the LexicalEnvironment is always restored regardless of how the
contained statement terminates. This is clear enough, as step 7 of the
algorithm explicitly talks about how exceptions are to be handled, but
the note is still a nice sanity check.
It seems to me that the description of 'catch' ought to have essentially
the same note. The body of a catch clause is a Block and not a
Statement, so there's no need to mention exception handling, as Block
takes care of that, but this is kind of subtle.
Like the 'with' statement, the 'catch' clause of a 'try' statement can
establish local bindings. In both cases, the spec describes this in
terms of changing the execution context's LexicalEnvironment temporarily
and then restoring it.
In the description of 'with', there is a "NOTE" assuring the reader that
the LexicalEnvironment is always restored regardless of how the
contained statement terminates. This is clear enough, as step 7 of the
algorithm explicitly talks about how exceptions are to be handled, but
the note is still a nice sanity check.
It seems to me that the description of 'catch' ought to have essentially
the same note. The body of a catch clause is a Block and not a
Statement, so there's no need to mention exception handling, as Block
takes care of that, but this is kind of subtle.
Like the 'with' statement, the 'catch' clause of a 'try' statement can establish local bindings. In both cases, the spec describes this in terms of changing the execution context's LexicalEnvironment temporarily and then restoring it.
In the description of 'with', there is a "NOTE" assuring the reader that the LexicalEnvironment is always restored regardless of how the contained statement terminates. This is clear enough, as step 7 of the algorithm explicitly talks about how exceptions are to be handled, but the note is still a nice sanity check.
It seems to me that the description of 'catch' ought to have essentially the same note. The body of a catch clause is a Block and not a Statement, so there's no need to mention exception handling, as Block takes care of that, but this is kind of subtle.