Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #100396
| Newsgroups | comp.lang.python |
|---|---|
| Date | 2015-12-13 13:10 -0800 |
| Message-ID | <b976659a-a7e0-40b4-b74b-2b3689e64d5c@googlegroups.com> (permalink) |
| Subject | Why is break allowed in finally, but continue is not? |
| From | Ned Batchelder <ned@nedbatchelder.com> |
For testing coverage.py, I wrote a program to generate
randomly-structured Python functions. When compiling
the results, I got a message I'd never seen before:
SyntaxError: 'continue' not supported inside 'finally' clause
I guess this makes sense, when cleaning up from an
exception, continuing the loop seems an odd thing to do.
But 'break' is allowed in 'finally' clauses! I tried this:
# Huh? This prints "here", and no exception is raised.
for i in range(1):
try:
1/0
finally:
# If you change this to "continue", you get:
# 'continue' not supported inside 'finally' clause
break
print "here"
The finally is perfectly willing to have a 'break', but it's
a syntax error to have 'continue'? Why? I don't see a
difference between the two when it comes to cleaning up
exceptions.
There are other things you can do in a finally clause that
will prevent the exception from being raised, like 'return',
and 'break' works just fine.
So why treat 'continue' specially?
--Ned.
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
Why is break allowed in finally, but continue is not? Ned Batchelder <ned@nedbatchelder.com> - 2015-12-13 13:10 -0800
Re: Why is break allowed in finally, but continue is not? Ben Finney <ben+python@benfinney.id.au> - 2015-12-14 09:27 +1100
Re: Why is break allowed in finally, but continue is not? Ned Batchelder <ned@nedbatchelder.com> - 2015-12-14 09:37 -0800
Re: Why is break allowed in finally, but continue is not? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-12-14 18:40 +0000
csiph-web