Message 70825 - Python tracker
You don't need to raise another exception, calling sys.exc_clear()
should be fine. But a cleaner way to write your example is:
def foo():
with open("a.txt", "w") as io:
raise RuntimeError()
"with" will automatically close the file when the block exits.
If you are concerned with Python < 2.5 compatibility, use "try: ...
finally:" instead.
And, you're right, the problem doesn't occur at all in Python 3.0
because the exception is cleaned up after the end of the "except:" block
catching it.