A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2001-April/116113.html below:

local variable not destructed if the function raised a exception

local variable not destructed if the function raised a exceptionjavalist javalist at 21cn.com
Mon Apr 9 23:44:34 EDT 2001
Hello python-list,

        following is what I did
        
Python 2.0 (#2, Mar 12 2001, 21:40:11)
[GCC 2.95.2 19991024 (release)] on sunos5
Type "copyright", "credits" or "license" for more information.
>>> class c1:
...     def __init__(self):
...             print "constructed " + `id(self)`
...     def __del__(self):
...             print "destructed " + `id(self)`
... 
>>> def f():
...     c1i = c1()  
...     print "in f"
...     raise KeyError
... 
>>> f()
constructed 1605572
in f
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 4, in f
KeyError
>>> c1i
destructed 1605572
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: There is no variable named 'c1i'
>>> def f1():
...     c1i = c1()
...     print "in f"
... 
>>> f1()
constructed 1605572
in f
destructed 1605572

        in f(),c1i is constructed correctly but after raise the exception(any exception),python
        didn't call c1i's destructor,in f1(),the behavior is just normal,destructor is called after
        f1() returns.anyone tell me why this happen,is this a bug or just a feature?

Best regards,
 javalist                          mailto:javalist at 21cn.com




More information about the Python-list mailing list

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