[ python-Bugs-1339007 ] shelve.Shelf.__del__ throws exceptions
SourceForge.net
noreply at sourceforge.net
Wed Jun 14 08:09:29 CEST 2006
Bugs item #1339007, was opened at 2005-10-26 23:30
Message generated for change (Comment added) made by gbrandl
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1339007&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: None
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Geoffrey T. Dairiki (dairiki)
Assigned to: Raymond Hettinger (rhettinger)
Summary: shelve.Shelf.__del__ throws exceptions
Initial Comment:
Python calls an object's __del__ method, even if the
objects __init__ method was unsuccessful (i.e. __init__
terminated via exception.)
Because of this, if there is an error while attempting
to open a Shelf, the destructor is still called, even
though the Shelf is not fully constructed. The code in
shelve.Shelf does not check for this possibility, and
therefor triggers an AttributeError.
Here is an example script which should reproduce the error.
===Begin test.py====l
import shelve
try:
shelf = shelve.open('non-existant-file', flag='r')
except:
pass
===End test.py=====
For me, the above script produces the message:
Exception exceptions.AttributeError: "DbfilenameShelf
instance has no attribute 'writeback'" in ignored
I can reproduce this using either Python 2.4.1 or
2.3.5. I took a quick look at the current CVS version
of shelve.py, and it appears to suffer the same problem.
----------------------------------------------------------------------
>Comment By: Georg Brandl (gbrandl)
Date: 2006-06-14 06:09
Message:
Logged In: YES
user_id=849994
Fixed in rev. 46946, 46947 (2.4).
----------------------------------------------------------------------
Comment By: Geoffrey T. Dairiki (dairiki)
Date: 2006-01-25 15:39
Message:
Logged In: YES
user_id=45814
Exceptions thrown in __del__ are not quite complete ignored,
since the fact that they are being "ignored" is reported on
sys.stderr.
The bug in question results in spurious, confusing messages
being issued to sys.stderr. I say it is a bug.
----------------------------------------------------------------------
Comment By: Georg Brandl (birkenfeld)
Date: 2006-01-20 22:10
Message:
Logged In: YES
user_id=1188172
Is this a bug? As exceptions in __del__ are ignored, this
should do no harm.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1339007&group_id=5470
More information about the Python-bugs-list
mailing list