Victor Subervi wrote:
Hi;
I'll trouble-shoot bare excepts as I work on new code. I'll
trouble-shoot the others that don't (seem to) cause problems later.
Here's a new one:
for optionsStore, storeOptions in ourOptions().iteritems():
if store == optionsStore:
for option in storeOptions:
try:
fromForm = form.getfirst(option)
try:
fromForm, junk = string.split(fromForm, ':')
except:
pass # This is only an expedient to split options that
have a colon in them, such as the colors
fromForm = string.replace(fromForm, '-', '')
sql = 'select "%s" from %s%s t join %s p where p.ID=t.ID;'
% (fromForm, store, (option[0].upper() + option[1:]), store)
# print sql
cursor.execute(sql)
try:
optionsPrices += cursor.fetchone()[0]
except TypeError:
pass # There is no options price for this.
except:
raise
If there are no values entered into table (in this case
"productsSizes") for the given product ID, then "optionsPrices" should
not be added unto. Am I doing this correctly? Or is there a better way
than capturing ALL TypeErrors?
TIA,
beno
Hello,
Do not use the 'try except' clause when 'if then' can perfectly handle
the case.
i.e.
try:
fromForm, junk = string.split(fromForm, ':')
except:
pass # This is only an expedient to split options that
have a colon in them, such as the colors
would be better written
# This is only an expedient to split options that have a colon in them,
such as the colors
if ':' in fromForm:
fromForm, junk = fromForm.split(':')
or
fromForm = fromForm.split(':')[0]
Anyway, you should definitely use a coding rule checker, like pylint or
pyckeck. It would sometimes point you into the correct direction. For
instance, pylint will tell you that except: pass is often (not always) a
clue for bad design/pattern and issue warnings for it.
In a more general manner, use try blocks when the code can throw
exceptions upon condition you do not control. When you know about the
conditions, use the if statement.
No:
a = None
try:
a.split()
except AttributeError:
pass
Yes:
a = None
if a:
a.split()
Exception are required in the following example:
try:
main()
except KeyboardInterrupt:
print 'interrupted by user'
Cheers,
JM
--
http://mail.python.org/mailman/listinfo/python-list