Nested try...except
Carl Banks
pavlovevidence at gmail.com
Wed Apr 2 20:08:32 EDT 2008
On Apr 2, 9:06 am, Magnus.Morab... at gmail.com wrote:
> Hi,
>
> I found the following code on the net -
>
> http://mail-archives.apache.org/mod_mbox/httpd-python-cvs/200509.mbox/%3C20050924104732.5116.qm...@minotaur.apache.org%3E
>
> 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
More information about the Python-list
mailing list