On Apr 2, 9:06 am, [EMAIL PROTECTED] wrote:
> Hi,
>
> I found the following code on the net -
>
> http://mail-archives.apache.org/mod_mbox/httpd-python-cvs/200509.mbox/[EMAIL 
> PROTECTED]
>
> def count(self):
> -            db = sqlite.connect(self.filename,
> isolation_level=ISOLATION_LEVEL)
> -            try:
> -                try:
> -                    cur = db.cursor()
> -                    cur.execute("select count(*) from sessions")
> -                    return cur.fetchone()[0]
> -                finally:
> -                    cur.close()
> -            finally:
> -                db.close()
>
> I don't understand though why the second try is not after the line cur
> = db.cursor(). Can anyone explain for me why?

It's a pretty common mistake to make, I assume because there's a
tendency to line up the init and finalize statements.  In other words,
it looks wrong for open and close to be in different columns:

open()
try:
    do_stuff()
finally:
    close()

It's almost always wrong for initiazation to be inside of the try
block.

Perhaps the advent of with blocks will help reduce this error in the
future.


Carl Banks
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to