homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: shelve.Shelf.__del__ throws exceptions
Type: Stage:
Components: Library (Lib) Versions:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: rhettinger Nosy List: dairiki, georg.brandl, georg.brandl, rhettinger
Priority: normal Keywords:

Created on 2005年10月26日 23:30 by dairiki, last changed 2022年04月11日 14:56 by admin. This issue is now closed.

Messages (4)
msg26742 - (view) Author: Geoffrey T. Dairiki (dairiki) Date: 2005年10月26日 23:30
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.
msg26743 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006年01月20日 22:10
Logged In: YES 
user_id=1188172
Is this a bug? As exceptions in __del__ are ignored, this
should do no harm.
msg26744 - (view) Author: Geoffrey T. Dairiki (dairiki) Date: 2006年01月25日 15:39
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.
msg26745 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006年06月14日 06:09
Logged In: YES 
user_id=849994
Fixed in rev. 46946, 46947 (2.4).
History
Date User Action Args
2022年04月11日 14:56:13adminsetgithub: 42527
2005年10月26日 23:30:42dairikicreate

AltStyle によって変換されたページ (->オリジナル) /