Guido van Rossum wrote: > A few days ago there were rumbling noises that requiring __exit__ to > re-raise the exception (as I amended PEP 343 at the time) could lead > to easily-missed bugs in __exit__ handlers. > > After thinking it over I think I agree and I think I'd like to change > the API so that the exception is only ignored if __exit__ returns a > "true" value. > > The easiest implementation is probably to just let the WITH_CLEANUP > opcode do everything. This becomes a rather heavy opcode then but the > alternative is to generate very hairy code (like the original patch > did, full of ROT 4 choruses). > > Any objections? I probably won't get to this until Monday. Sounds good to me - I believe the majority of explicit __exit__ handlers will be of a try/finally nature rather than try/except, and that situations where the exception is going to be suppressed are better handled using @contextmanager. The solution you propose means that __exit__ methods *can* suppress exceptions if they want to, but their default behaviour will still do the right thing. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4